Skip to content

Latest commit

 

History

History
56 lines (40 loc) · 2.25 KB

README.md

File metadata and controls

56 lines (40 loc) · 2.25 KB

Courier

Courier is a simple network layer built on NSURLSession and various categories of convenience.

  • Easy network activity display management
  • Respond to changes in reachability
  • Respond to 401 unauthorized errors
  • Request logging
  • Easily build NSURLRequests with proper encoding

Getting Started

#import <Courier/Courier.h>

// Default config
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];

// Add additional headers
config.HTTPAdditionalHeaders = @{@"Accept" : @"application/json"};

// Be a good API citizen and limit to 1 HTTP connection per host
config.HTTPMaximumConnectionsPerHost = 1;

// Build session controller
CRSessionController *sessionController = [CRSessionController sessionControllerWithConfiguration:config 
                                                                                        delegate:controller];

// Build a POST request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithMethod:@"POST"
                                                                 path:@"https://service.com/api"
                                                             encoding:CR_URLJSONParameterEncoding
                                                        URLParameters:@{@"urlParam" : @"value"}
                                                   HTTPBodyParameters:@{@"bodyParam" : @"value"}
                                                               header:@{@"Header-Name" : @"value"}];


// Build a task
NSURLSessionDataTask *task = [sessionController dataTaskForRequest:request
                                                 completionHandler:^(NSData *data,
                                                                     NSURLResponse *response,
                                                                     NSError *error) {
                                                     if (response.success) {
                                                         // Hurrah!
                                                     }
                                                 }];

// Start task
[task resume];

Externals