tree: 73bc5ee622e8f4a4358fdd9835751b066bd94fae [path history] [tgz]
  1. Courier/
  2. LICENSE
  3. README.md
README.md

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