My idea is to add a signature to each request I perform to a server. I want this value in the headers so that the server can identify the client.
Here is how I currently set my manager :
@property(nonatomic, strong) RKObjectManager *manager;
...
- (void)setupManager {
self.manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ACCESS_POINT]];
// Add logic here to add my dynamic header
[self.manager.HTTPClient setDefaultHeader:@"Content-Type" value:@"application/json"];
[self.manager.HTTPClient setDefaultHeader:@"Accept" value:@"application/json"];
[self.manager addResponseDescriptorsFromArray:@[...];
[self.manager addRequestDescriptorsFromArray:@[...];
}
I call setupManager only once
So I want my manager to set a header that will be different at each request, automatically for me, something like that
// the signature method would return an encoded string with some encrypted value, different each time we call it
[self.manager.HTTPClient setDefaultHeader:@"SIGNATURE" value:[self signature]];
Ok I went with the NSOperationQueue used by the AFHTTPClient
- (void)setupManager {
self.manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ACCESS_POINT]];
[self.manager.HTTPClient.operationQueue addOperationWithBlock:^{
[self.manager.HTTPClient setDefaultHeader:@"SIGNATURE" value:[self signature]];
}];
[self.manager.HTTPClient setDefaultHeader:@"Content-Type" value:@"application/json"];
[self.manager.HTTPClient setDefaultHeader:@"Accept" value:@"application/json"];
[self.manager addResponseDescriptorsFromArray:@[...];
[self.manager addRequestDescriptorsFromArray:@[...];
}
Let me know if you find a better way of doing it !