Latest 1.0.0
Homepage https://github.com/Serjip/SweetREST
License MIT
Platforms ios 7.0, osx 10.9

SweetREST is a tiny lib for creating http request service of cocoa applications.
The lib allows to send common http requests such as GET, POST, PUT, PATCH, HEAD and DELETE. It is a lightweight version of amazing AFNetworking, with a couple of additional features like nice error handling.

Installation with CocoaPods

CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries.

platform :ios, '7.0'
pod "SweetREST"

Example

To start sending requests you just need to init sweetRest with NSURLSession and baseURL of your backend.

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
self.sweetRest = [[SPSweetRest alloc] initWithSession:session baseURL:[NSURL URLWithString:@"http://example.com/json/api/"]];

Sending a simple GET request.

NSDictionary *params = @{@"name" : @"serj"};

[self.sweetRest GET:@"person" params:params completion:^(id responseObject, NSError *error) {

    if(! error) {
        //Success
    }
    else {
        //Failure
    }

}];

Error handling

Error handling is a main feature of the lib. Unlike AFNetworking SweetREST is creating NSError’s where codes coresponds to http status codes.
For example if your backend is responsing 401 Unauthorized, you may handle it and expire auth token:

...

if (error.code == 401) {
    [self.sweetRest removeValueForHTTPHeaderField:@"XX-MY-SWEET-AUTH-TOKEN"];
}

One of the features is SPSweetRestDelegate protocol. The protocol allows listen every valid (with status code 2xx and JSON content type) response form the server:

- (void)sweetRest:(SPSweetRest *)sweetRest didReceiveResponse:(NSHTTPURLResponse *)response
{
    // Ckeck for token
    NSString *token = response.allHeaderFields[@"AUTH-TOKEN"];

    //Status code
    NSInteger code = response.statusCode;

    // Do somthing here..
}

Or every failure response:

- (void)sweetRest:(SPSweetRest *)sweetRest didFailResponse:(NSHTTPURLResponse *)response error:(NSError *)error
{
    // Do somthing here
}

Moreover you may provide some custom error and accept every response:

- (BOOL)sweetRest:(SPSweetRest *)sweetRest shouldAcceptResponse:(NSHTTPURLResponse *)response forObject:(id)responseObject provideError:(NSError **)error
{
    NSInteger code = response.statusCode;   
    if (code == 201) {
        // Provide some custom error
        NSDictionary *userInfo = @{NSLocalizedDescriptionKey : @"I do not like 201 status code!"};
        *error = [NSError errorWithDomain:SPSeweetRestErrorDomain code:777 userInfo:userInfo];
        return NO;
    }
    return YES;
}

License

SweetREST is available under the MIT license. See the LICENSE file for more info.

Bitdeli Badge

Latest podspec

{
    "name": "SweetREST",
    "version": "1.0.0",
    "summary": "SweetREST is a tiny http request service and nice error handling",
    "homepage": "https://github.com/Serjip/SweetREST",
    "license": "MIT",
    "authors": "Sergey Popov",
    "platforms": {
        "ios": "7.0",
        "osx": "10.9"
    },
    "source": {
        "git": "https://github.com/Serjip/SweetREST.git",
        "tag": "1.0.0"
    },
    "source_files": "SweetREST/*.{h,m}",
    "public_header_files": "SweetREST/*.h"
}

Pin It on Pinterest

Share This