forked from iridia/IRWebAPIKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIRWebAPIEngine+OperationFiring.m
More file actions
73 lines (53 loc) · 3.42 KB
/
IRWebAPIEngine+OperationFiring.m
File metadata and controls
73 lines (53 loc) · 3.42 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
//
// IRWebAPIEngine+OperationFiring.m
// IRWebAPIKit
//
// Created by Evadne Wu on 6/25/12.
//
//
#import "IRWebAPIEngine+OperationFiring.h"
#import "IRWebAPIRequestContext.h"
#import "IRWebAPIEngine+FormURLEncoding.h"
#import "IRWebAPIRequestOperation.h"
#import "IRWebAPIEngine+FormMultipart.h"
NSString * const kIRWebAPIEngineRequestHTTPBaseURL = @"kIRWebAPIEngineRequestHTTPBaseURL";
NSString * const kIRWebAPIEngineRequestHTTPHeaderFields = @"kIRWebAPIEngineRequestHTTPHeaderFields";
NSString * const kIRWebAPIEngineRequestHTTPPOSTParameters = @"kIRWebAPIEngineRequestHTTPPOSTParameters";
NSString * const kIRWebAPIEngineRequestHTTPBody = @"kIRWebAPIEngineRequestHTTPBody";
NSString * const kIRWebAPIEngineRequestHTTPQueryParameters = @"kIRWebAPIEngineRequestHTTPQueryParameters";
NSString * const kIRWebAPIEngineRequestHTTPMethod = @"kIRWebAPIEngineRequestHTTPMethod";
NSString * const kIRWebAPIEngineParser = @"kIRWebAPIEngineParser";
NSString * const kIRWebAPIEngineResponseContextURLResponse = @"kIRWebAPIEngineResponseContextURLResponse";
NSString * const kIRWebAPIRequestTimeout = @"kIRWebAPIRequestTimeout";
NSString * const kIRWebAPIEngineRequestContextFormURLEncodingFieldsKey = @"kIRWebAPIEngineRequestContextFormURLEncodingFieldsKey";
@implementation IRWebAPIEngine (OperationFiring)
- (void) fireAPIRequestNamed:(NSString *)methodName withArguments:(NSDictionary *)arguments options:(NSDictionary *)options validator:(IRWebAPIResponseValidator)validatorBlock successHandler:(IRWebAPICallback)successBlock failureHandler:(IRWebAPICallback)failureBlock {
IRWebAPIRequestOperation *operation = [self operationForMethod:methodName arguments:arguments contextOverride:^(IRWebAPIRequestContext *context) {
if ([options objectForKey:kIRWebAPIEngineRequestHTTPBaseURL])
context.baseURL = [options objectForKey:kIRWebAPIEngineRequestHTTPBaseURL];
[[options objectForKey:kIRWebAPIEngineRequestHTTPHeaderFields] enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[context setValue:obj forHeaderField:key];
}];
if ([options objectForKey:kIRWebAPIEngineRequestHTTPBody])
context.body = [options objectForKey:kIRWebAPIEngineRequestHTTPBody];
[[options objectForKey:kIRWebAPIEngineRequestHTTPQueryParameters] enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[context setValue:key forQueryParam:key];
}];
if ([options objectForKey:kIRWebAPIEngineRequestHTTPMethod])
context.method = [options objectForKey:kIRWebAPIEngineRequestHTTPMethod];
if ([options objectForKey:kIRWebAPIEngineParser])
context.parser = [options objectForKey:kIRWebAPIEngineParser];
if ([options objectForKey:kIRWebAPIEngineResponseContextURLResponse])
context.urlResponse = [options objectForKey:kIRWebAPIEngineResponseContextURLResponse];
if ([options objectForKey:kIRWebAPIRequestTimeout])
context.timeout = [[options objectForKey:kIRWebAPIRequestTimeout] doubleValue];
[[options objectForKey:kIRWebAPIEngineRequestContextFormURLEncodingFieldsKey] enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[context setValue:obj forFormURLEncodingField:key];
}];
[[options objectForKey:kIRWebAPIEngineRequestContextFormMultipartFieldsKey] enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[context setValue:obj forFormMultipartField:key];
}];
} validator:validatorBlock successBlock:successBlock failureBlock:failureBlock];
[self.queue addOperation:operation];
}
@end