Interceptando CADA respuesta con Alamofire

Solo estoy explorando el uso de Alamofire y es excelente, pero me gustaría hacer algo que me parece posible, pero no estoy seguro de cómo hacerlo.

Nuestra authentication con el server usa tokens portadores de uso único. Entonces, para cada request realizada, tengo que almacenar el nuevo token enviado con esa request.

Lo que me gustaría hacer es interceptar cada respuesta que regrese y revisar el encabezado Authorisation . Guárdelo en el disco y luego avance al lugar en espera de los datos reales.

¿Esto es posible con Alamofire?

Si es así, por favor, ¿podría apuntarme en la dirección correcta?

Gracias

Bien, después de search un poco el github y rascarse la cabeza, decidí crear un nuevo serializador de respuestas al extender el tipo de Request .

saveAuth() un nuevo bloque saveAuth() como tal …

 extension Request { public static func AuthSaver() -> ResponseSerializer<Bool, NSError> { return ResponseSerializer { request, response, data, error in guard error == nil else { return .Failure(error!) } if let auth = response?.allHeaderFields["Authorization"] as? String { Router.OAuthToken = auth // this uses a didset on the Router to save to keychain } return .Success(true) } } public func saveAuth() -> Self { return response(responseSerializer: Request.AuthSaver()) {_ in} } } 

Puedo llamarlo como …

 Alamofire.request(Router.Search(query: query)) .validate() .responseSaveAuth() // this line .responseJSON { response in // ... } 

Todavía requiere agregar en cada lugar que quiero eliminar el token de authentication recién enviado, pero significa que puedo elegir cuándo no hacerlo y es una sola línea de código.

Es posible que no sea el código más elegante de la extensión (todavía me estoy enfrentando con todo), pero hace que sea mucho más fácil save la authentication cada vez.

Lo he solucionado solo teniendo un lugar en mi aplicación que envía requestes de networking. Básicamente, tengo un "administrador de networking" que genera NSURLRequests y los canaliza a una function que realmente envía la request (en mi caso es una sub class NSOperation). De esa manera, solo tengo una location de la que leo respuestas.