Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Josip Bernat committed Oct 1, 2014
1 parent ae3d607 commit aac2af3
Show file tree
Hide file tree
Showing 5 changed files with 185 additions and 139 deletions.
27 changes: 27 additions & 0 deletions JBMessage/JBMessage/JBMessage+NSURLConnection.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// JBMessage+NSURLConnection.h
// JBMessage
//
// Created by Josip Bernat on 01/10/14.
// Copyright (c) 2014 Jospi Bernat. All rights reserved.
//

#import "JBMessage.h"

@class AFHTTPRequestOperationManager;
@class AFHTTPResponseSerializer;
@class AFHTTPRequestSerializer;

@protocol AFURLResponseSerialization;
@protocol AFURLRequestSerialization;

@interface JBMessage (NSURLConnection)

- (AFHTTPRequestOperationManager *)requestOperationManager;
- (AFHTTPResponseSerializer <AFURLResponseSerialization> *)httpResponseSerializer;
- (AFHTTPRequestSerializer <AFURLRequestSerialization> *)httpRequestSerializer;

- (NSString *)actionUrlString;
- (NSMutableURLRequest *)urlRequest;

@end
145 changes: 145 additions & 0 deletions JBMessage/JBMessage/JBMessage+NSURLConnection.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
//
// JBMessage+NSURLConnection.m
// JBMessage
//
// Created by Josip Bernat on 01/10/14.
// Copyright (c) 2014 Jospi Bernat. All rights reserved.
//

#import "JBMessage+NSURLConnection.h"
#import "AFHTTPRequestOperationManager.h"

@implementation JBMessage (NSURLConnection)

#pragma mark - AFNetworking

- (AFHTTPRequestOperationManager *)requestOperationManager {

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [self httpResponseSerializer];
manager.requestSerializer = [self httpRequestSerializer];

if (self.authorizationToken) {
[manager.requestSerializer setValue:self.authorizationToken forHTTPHeaderField:@"Token"];
}

if (self.username && self.username.length &&
self.password && self.password.length) {

[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:self.username
password:self.password];
}

return manager;
}

- (AFHTTPResponseSerializer <AFURLResponseSerialization> *)httpResponseSerializer {

switch (self.responseSerializer) {
case JBResponseSerializerTypeCompound:
return [AFCompoundResponseSerializer serializer];

case JBResponseSerializerTypeHTTP:
return [AFHTTPResponseSerializer serializer];

case JBResponseSerializerTypeImage:
return [AFImageResponseSerializer serializer];

case JBResponseSerializerTypeJSON:
return [AFJSONResponseSerializer serializer];

case JBResponseSerializerTypePropertyList:
return [AFPropertyListResponseSerializer serializer];

case JBResponseSerializerTypeXMLParser:
return [AFXMLParserResponseSerializer serializer];

default:
break;
}
}

- (AFHTTPRequestSerializer <AFURLRequestSerialization> *)httpRequestSerializer {

switch (self.requestSerializer) {
case JBRequestSerializerTypeHTTP:
return [AFHTTPRequestSerializer serializer];
break;

case JBRequestSerializerTypeJSON:
return [AFJSONRequestSerializer serializer];
break;

case JBRequestSerializerTypePropertyList:
return [AFPropertyListRequestSerializer serializer];
break;

default:
break;
}
}

#pragma mark - Request

- (NSString *)actionUrlString {

if (self.requestURL) {

if (self.action) {
return [[self.requestURL absoluteString] stringByAppendingString:self.action];
}
else {
return [self.requestURL absoluteString];
}
}
else {
return [NSString stringWithFormat:@"%@%@", [[self class] registratedBaseUrl], self.action];
}
}

- (NSMutableURLRequest *)urlRequest {

AFHTTPRequestOperationManager *manager = [self requestOperationManager];
NSMutableURLRequest *request = nil;

if (!self.inputFileURL || self.httpMethod == JBHTTPMethodGET) {

NSError *error = nil;
request = [manager.requestSerializer requestWithMethod:self.httpMethod
URLString:[self actionUrlString]
parameters:self.parameters
error:&error];

#ifdef DEBUG
if (error) { NSLog(@"Error while creating request: %@", error); }
#endif

}
else {

__weak id this = self;
NSError *multpartError = nil;
request = [manager.requestSerializer multipartFormRequestWithMethod:self.httpMethod
URLString:[self actionUrlString]
parameters:self.parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

__strong JBMessage *strongThis = this;
[formData appendPartWithFileURL:strongThis.inputFileURL
name:strongThis.filename
error:nil];
} error:&multpartError];

#ifdef DEBUG
if (multpartError) { NSLog(@"Error while creating multpart form request: %@", multpartError); }
#endif

}

request.timeoutInterval = self.timeoutInterval;

return request;
}

@end
7 changes: 7 additions & 0 deletions JBMessage/JBMessage/JBMessage.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,13 @@ typedef void (^JBDownloadBlock)(NSUInteger bytesRead, long long totalBytesRead,
*/
+ (void)registerBaseUrl:(NSString *)baseUrl;

/**
* Registrated baseUrl.
*
* @return String containing URL.
*/
+ (NSString *)registratedBaseUrl;

/**
* Sets number of concurrent messages in messages queue.
*
Expand Down
143 changes: 5 additions & 138 deletions JBMessage/JBMessage/JBMessage.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#import "JBMessage.h"
#import "AFHTTPRequestOperationManager.h"
#import "JBMessage+NSURLConnection.h"

JBHTTPMethod const JBHTTPMethodGET = @"GET";
JBHTTPMethod const JBHTTPMethodPOST = @"POST";
Expand Down Expand Up @@ -45,21 +46,8 @@ + (NSOperationQueue *)sharedQueue;
#pragma mark - Shared Instance
+ (instancetype)sharedInstance;

@property (nonatomic) UIBackgroundTaskIdentifier backgroundTaskIdentifier;

@end

@interface JBMessage (Connection)

- (AFHTTPRequestOperationManager *)requestOperationManager;
- (AFHTTPResponseSerializer <AFURLResponseSerialization> *)httpResponseSerializer;
- (AFHTTPRequestSerializer <AFURLRequestSerialization> *)httpRequestSerializer;
- (NSString *)actionUrlString;
- (NSMutableURLRequest *)urlRequest;

@end


@implementation JBMessage

#pragma mark - Memory Management
Expand All @@ -83,6 +71,7 @@ + (NSOperationQueue *)sharedQueue {
dispatch_once(&onceToken, ^{
queue = [[NSOperationQueue alloc] init];
queue.maxConcurrentOperationCount = 1;
[queue setName:@"com.jbmessage.shared_queue"];
});

return queue;
Expand Down Expand Up @@ -128,6 +117,9 @@ + (void)registerBaseUrl:(NSString *)baseUrl {
baseUrlString = baseUrl;
});
}
+ (NSString *)registratedBaseUrl {
return baseUrlString;
}

+ (void)requsterMaxNumberOfConcurrentMessages:(NSUInteger)maxConcurrentMessages {

Expand Down Expand Up @@ -361,128 +353,3 @@ - (void)send {
}

@end

@implementation JBMessage (Connection)

#pragma mark - Connection Helpers

- (AFHTTPRequestOperationManager *)requestOperationManager {

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [self httpResponseSerializer];
manager.requestSerializer = [self httpRequestSerializer];

if (self.authorizationToken) {
[manager.requestSerializer setValue:self.authorizationToken forHTTPHeaderField:@"Token"];
}

if (self.username && self.username.length &&
self.password && self.password.length) {

[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:self.username
password:self.password];
}

return manager;
}

- (AFHTTPResponseSerializer <AFURLResponseSerialization> *)httpResponseSerializer {

switch (self.responseSerializer) {
case JBResponseSerializerTypeCompound:
return [AFCompoundResponseSerializer serializer];

case JBResponseSerializerTypeHTTP:
return [AFHTTPResponseSerializer serializer];

case JBResponseSerializerTypeImage:
return [AFImageResponseSerializer serializer];

case JBResponseSerializerTypeJSON:
return [AFJSONResponseSerializer serializer];

case JBResponseSerializerTypePropertyList:
return [AFPropertyListResponseSerializer serializer];

case JBResponseSerializerTypeXMLParser:
return [AFXMLParserResponseSerializer serializer];

default:
break;
}
}

- (AFHTTPRequestSerializer <AFURLRequestSerialization> *)httpRequestSerializer {

switch (self.requestSerializer) {
case JBRequestSerializerTypeHTTP:
return [AFHTTPRequestSerializer serializer];
break;

case JBRequestSerializerTypeJSON:
return [AFJSONRequestSerializer serializer];
break;

case JBRequestSerializerTypePropertyList:
return [AFPropertyListRequestSerializer serializer];
break;

default:
break;
}
}

- (NSString *)actionUrlString {

return (self.requestURL ? (self.action ?
[[self.requestURL absoluteString] stringByAppendingString:self.action] :
[self.requestURL absoluteString]) :
[NSString stringWithFormat:@"%@%@", baseUrlString, self.action]);
}

- (NSMutableURLRequest *)urlRequest {

AFHTTPRequestOperationManager *manager = [self requestOperationManager];
NSMutableURLRequest *request = nil;

if (!self.inputFileURL || self.httpMethod == JBHTTPMethodGET) {

NSError *error = nil;
request = [manager.requestSerializer requestWithMethod:self.httpMethod
URLString:[self actionUrlString]
parameters:self.parameters
error:&error];

#ifdef DEBUG
if (error) { NSLog(@"Error while creating request: %@", error); }
#endif

}
else {

__weak id this = self;
NSError *multpartError = nil;
request = [manager.requestSerializer multipartFormRequestWithMethod:self.httpMethod
URLString:[self actionUrlString]
parameters:self.parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

__strong JBMessage *strongThis = this;
[formData appendPartWithFileURL:strongThis.inputFileURL
name:strongThis.filename
error:nil];
} error:&multpartError];

#ifdef DEBUG
if (multpartError) { NSLog(@"Error while creating multpart form request: %@", multpartError); }
#endif

}

request.timeoutInterval = self.timeoutInterval;

return request;
}

@end
2 changes: 1 addition & 1 deletion Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ DEPENDENCIES:
SPEC CHECKSUMS:
AFNetworking: 0aabc6fae66d6e5d039eeb21c315843c7aae51ab

COCOAPODS: 0.33.1
COCOAPODS: 0.34.1

0 comments on commit aac2af3

Please sign in to comment.