-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHTTPManager.m
More file actions
166 lines (150 loc) · 6.88 KB
/
HTTPManager.m
File metadata and controls
166 lines (150 loc) · 6.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//
// HTTPManager.m
// BI-iOS-2013_06-REST
//
// Created by Jakub Hladík on 29.10.13.
// Copyright (c) 2013 Flowknight s.r.o. All rights reserved.
//
#import "HTTPManager.h"
@implementation HTTPManager
{
AFHTTPSessionManager *_imageManager;
}
/*
pri prvnim zavolani to vytvori GCD frontu ktera zpracovava tasky na pozadi
*/
- (dispatch_queue_t)backgroundCompletionQueue
{
static dispatch_queue_t _bg_queue;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_bg_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
});
return _bg_queue;
}
+ (instancetype)sharedManager
{
/*
zakomentovany kod dela to same jako to makro
*/
// static HTTPManager *_sharedInstance;
// static dispatch_once_t onceToken;
// dispatch_once(&onceToken, ^{
// _sharedInstance = [[self alloc] initWithBaseURL:nil];
// });
// return _sharedInstance;
DEFINE_SHARED_INSTANCE_USING_BLOCK(^{
NSURL *url = [NSURL URLWithString:kBaseURLString];
return [[self alloc] initWithBaseURL:url];
});
}
- (instancetype)initWithBaseURL:(NSURL *)url
{
self = [super initWithBaseURL:url];
if (self) {
;
/*
druhy sessionManader ktery umi deserializovat obrazky
*/
NSURL *url = [NSURL URLWithString:kBaseURLString];
_imageManager = [[AFHTTPSessionManager alloc] initWithBaseURL:url];
_imageManager.requestSerializer = [AFHTTPRequestSerializer serializer];
_imageManager.responseSerializer = [AFImageResponseSerializer serializer];
/*
callbacky budou bezet na pozadi ve fronte
*/
[_imageManager setCompletionQueue:[self backgroundCompletionQueue]];
}
return self;
}
- (NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(NSDictionary *)parameters
success:(void (^)(NSURLSessionDataTask *, id))success
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure
{
return [super GET:URLString
parameters:parameters
success:^(NSURLSessionDataTask *task, id responseObject){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
success(task, responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
failure(task, error);
}];
}
- (NSURLSessionDataTask *)PUT:(NSString *)URLString
parameters:(NSDictionary *)parameters
success:(void (^)(NSURLSessionDataTask *, id))success
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure
{
return [super PUT:URLString
parameters:parameters
success:^(NSURLSessionDataTask *task, id responseObject){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
success(task, responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
failure(task, error);
}];
}
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(NSDictionary *)parameters
success:(void (^)(NSURLSessionDataTask *, id))success
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure
{
return [super POST:URLString
parameters:parameters
success:^(NSURLSessionDataTask *task, id responseObject){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
success(task, responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
failure(task, error);
}];
}
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(NSDictionary *)parameters
constructingBodyWithBlock:(void (^)(id<AFMultipartFormData>))block
success:(void (^)(NSURLSessionDataTask *, id))success
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure
{
return [super POST:URLString parameters:parameters
constructingBodyWithBlock:block
success:^(NSURLSessionDataTask *task, id responseObject){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
success(task, responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error){
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
failure(task, error);
}];
}
- (void)getImageAtPath:(NSString *)path
parameters:(NSDictionary *)parameters
process:(UIImage *(^)(UIImage *))process
success:(void (^)(NSHTTPURLResponse *, id))success
failure:(void (^)(NSError *))failure
{
NSParameterAssert(path);
NSParameterAssert(success);
NSParameterAssert(failure);
NSMutableURLRequest *request = [_imageManager.requestSerializer requestWithMethod:@"GET"
URLString:path
parameters:parameters];
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
__block NSURLSessionDataTask *task = [_imageManager dataTaskWithRequest:request
completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) {
TRC_LOG(@"%d, %@ %@", ((NSHTTPURLResponse *)task.response).statusCode, task.originalRequest.HTTPMethod, task.originalRequest.URL)
if (error) {
failure(error);
} else {
NSAssert(![NSThread currentThread].isMainThread, @"this must be executed on background thread");
UIImage *image = process(responseObject);
dispatch_async(dispatch_get_main_queue(), ^{
NSAssert([NSThread currentThread].isMainThread, @"this must be executed on main thread");
success((NSHTTPURLResponse *)task.response, image);
});
}
}];
[task resume];
}
@end