5 // Created by Hori,Masaki on 2015/05/21.
6 // Copyright (c) 2015年 Hori,Masaki. All rights reserved.
9 #import "HMAPIResult.h"
11 #import "HMAppDelegate.h"
14 @interface HMAPIResult ()
15 @property (strong, readwrite, nonatomic) NSString *api;
16 @property (strong, readwrite, nonatomic) NSDictionary *parameter;
17 @property (strong, readwrite, nonatomic) id json;
18 @property (strong, readwrite, nonatomic) NSDate *date;
19 @property (readwrite, nonatomic) BOOL success;
20 @property (strong, readwrite, nonatomic) NSString *errorString;
22 @property (strong, nonatomic) NSData *jsonData;
23 @property (strong, nonatomic) NSString *paramString;
27 @implementation HMAPIResult
29 - (instancetype)initWithRequest:(NSURLRequest *)request data:(NSData *)data
33 NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
34 if(![string hasPrefix:@"svdata="]) {
35 HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
36 [appDelegate logLineReturn:@"recive data has not prefix svdata=. api -> %@.", request.URL.path];
37 [appDelegate logLineReturn:@"Original strings -> %@", string];
40 string = [string substringFromIndex:strlen("svdata=")];
41 _jsonData = [string dataUsingEncoding:NSUTF8StringEncoding];
43 NSData *requestBodyData = [request HTTPBody];
44 _paramString = [[NSString alloc] initWithData:requestBodyData encoding:NSUTF8StringEncoding];
46 _api = request.URL.path;
47 _date = [NSDate dateWithTimeIntervalSinceNow:0];
56 id json = [NSJSONSerialization JSONObjectWithData:self.jsonData
57 options:NSJSONReadingAllowFragments
60 HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
61 [appDelegate logLineReturn:@"Fail decode JSON data %@", error];
64 if(![json isKindOfClass:[NSDictionary class]]) {
65 self.errorString = @"JSON is NOT NSDictionary.";
68 if(![[json objectForKey:@"api_result"] isEqual:@1]) {
78 if(_json) return _json;
84 - (void)parseParameter
86 NSString *unescape = [self.paramString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
87 NSArray *pair = [unescape componentsSeparatedByString:@"&"];
88 NSMutableDictionary *dict = [NSMutableDictionary new];
89 for(NSString *p in pair) {
90 NSArray *pp = [p componentsSeparatedByString:@"="];
92 NSLog(@"API (%@): Bad Argument: pair is odd.", self.api);
95 [dict setObject:pp[1] forKey:pp[0]];
100 NSMutableArray *array = [NSMutableArray new];
101 for(NSString *p in pair) {
102 NSArray *pp = [p componentsSeparatedByString:@"="];
103 if([pp count] != 2) {
104 NSLog(@"API (%@): Bad Argument: pair is odd.", self.api);
107 [array addObject:@{@"key": pp[0], @"value": pp[1]}];
109 self.argumentArray = array;
113 - (NSDictionary *)parameter
115 if(_parameter) return _parameter;
117 [self parseParameter];
121 - (NSArray *)argumentArray
123 if(_argumentArray) return _argumentArray;
125 [self parseParameter];
126 return _argumentArray;
132 if(_json) return _success;