2009-09-28 9 views
3

Je souhaite utiliser url.el (et url-http.el en particulier) pour effectuer des appels REST par programme. L'utilisateur a déjà spécifié les informations d'identification par d'autres moyens (mais cela n'est que légèrement pertinent - je souhaite obtenir le même comportement pour les appels non authentifiés) mais sur certaines requêtes je peux toujours obtenir une réponse 401 (Non autorisé).Comment utiliser la librairie url.el d'Emacs sans que l'utilisateur demande une réponse 401 (non autorisée)?

Je veux url.el juste laisser faire et me retourner cette réponse 401 sans passer par tout le rigmarole de demander à l'utilisateur (qui ne sera ennuyé à être demandé à nouveau).

Remarque: J'ai créé l'en-tête d'autorisation initiale manuellement, donc je n'utilise aucune fonction de l'url-auth.el (ou de ce que l'on appelle).


Edit: Cela semble fonctionner pour moi (solution fournie par Sacha):

(defvar *foobar-within-call* nil 
    "Helper variable to indicate if we are withing a foobar call and thus won't want the authentication mechanisms to kick in") 

(defadvice url-http-handle-authentication (around foobar-fix) 
    (unless *foobar-within-call* 
     ad-do-it)) 
(ad-activate 'url-http-handle-authentication) 

Répondre

3

Je suppose que vous pouvez ajouter quelques conseils autour url-http-handle authentification ...

+0

Cela a fonctionné en effet. J'avais oublié le defadvice et j'ai essayé de fixer temporairement une nouvelle définition qui, d'une manière ou d'une autre, ne fonctionnait pas. Ma solution actuelle est quelque chose comme ceci: (defvar * foobar-within-call * nil "Variable d'aide pour indiquer si nous recevons un appel de foobar et ne voudrons donc pas que les mécanismes d'authentification entrent en action") (defadvice url-http-handle-authentification (autour foobar-fix) (sauf * foobar-dans-appel * ad-do-it)) (ad-activate « url-http-handle-authentification) –

Questions connexes