HTTP Event interceptor
l'intercepteur d'events est basé sur le même modèle qu'angular-http-auth
Il permet d'handle des codes d'erreur http et les "broadcast" sur la $rootScope
Http events handlers:
var handlers = [
{
//code http
code: 401,
buffered:true, //event type buffered
ignore:'ignoreUnauthorized',//config ignore handler
events:[
'sfc:unauthorized','sfc:auth:loginRequired'
],
retries_events:[
'sfc:unauthorized-retried','sfc:auth:loginConfirmed'
],
rejects_events:[
'sfc:unauthorized-rejected','sfc:auth:loginCancelled'
]
},
{
code: 403,
buffered:false,
ignore:'ignoreForbidden',
events:[
'sfc:forbidden','sfc:auth:forbidden'
]
}
];
Utilisation classique
Type d'event buffered:true
//appel serveur pouvant échouer (manque d'authentification)
$http(...).then(function(response) { do-something-with-response });
lorsque qu'une réponse serveur porte le code d'un handler buffered il capture la requette et broadcast les events
Exemple pour le code 401:
[
'sfc:unauthorized',
'sfc:auth:loginRequired'
]
dans ce cas précis l'application doit intercepter ce ou ces events pour afficher un formulaire de connexion
lorsque que l'application determine que l'authentification est OK broadcast un des retries_events
exemple : sfc:auth:loginConfirmed
la requette initiale est réessayée et lorsque une reponse correcte est finalement retournée le function(response) { do-something-with-response }
est executé
lorsque l'authentification n'est pas possible (plusieurs essais infructueux par exemple) nous pouvons broadcast un des rejects_events
exemple : sfc:auth:loginCancelled
afin de rejeter toute les requettes en attente
Type d'event buffered:false
identique dans le fonctionnement que les events buffered:true
sauf que il est impossible de réessayer les requettes échouées il permet uniquement de pouvoir transmettre un event lorsque qu'un requette échoue