Commit b0579422a5100b874adc1379eeb4ab9cd00a3ee4

Authored by nvtu11790@gmail.com
1 parent e796f8345c

fix index of mode in history screen

Showing 1 changed file with 8 additions and 2 deletions Inline Diff

LifeLog/LifeLog/ServerAPI.m
1 // 1 //
2 // ServerAPI.m 2 // ServerAPI.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "ServerAPI.h" 9 #import "ServerAPI.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 12 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
13 NSString *const kUser = @"KEY_USER"; 13 NSString *const kUser = @"KEY_USER";
14 NSString *const kToken = @"KEY_TOKEN"; 14 NSString *const kToken = @"KEY_TOKEN";
15 NSString *const kNotificationToken = @"TOKEN_INVALID"; 15 NSString *const kNotificationToken = @"TOKEN_INVALID";
16 16
17 @implementation NSString (NSString_Extended) 17 @implementation NSString (NSString_Extended)
18 - (NSString *)urlencode { 18 - (NSString *)urlencode {
19 NSMutableString *output = [NSMutableString string]; 19 NSMutableString *output = [NSMutableString string];
20 const unsigned char *source = (const unsigned char *)[self UTF8String]; 20 const unsigned char *source = (const unsigned char *)[self UTF8String];
21 int sourceLen = (int)strlen((const char *)source); 21 int sourceLen = (int)strlen((const char *)source);
22 for (int i = 0; i < sourceLen; ++i) { 22 for (int i = 0; i < sourceLen; ++i) {
23 const unsigned char thisChar = source[i]; 23 const unsigned char thisChar = source[i];
24 if (thisChar == ' '){ 24 if (thisChar == ' '){
25 [output appendString:@"+"]; 25 [output appendString:@"+"];
26 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 26 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
27 (thisChar >= 'a' && thisChar <= 'z') || 27 (thisChar >= 'a' && thisChar <= 'z') ||
28 (thisChar >= 'A' && thisChar <= 'Z') || 28 (thisChar >= 'A' && thisChar <= 'Z') ||
29 (thisChar >= '0' && thisChar <= '9')) { 29 (thisChar >= '0' && thisChar <= '9')) {
30 [output appendFormat:@"%c", thisChar]; 30 [output appendFormat:@"%c", thisChar];
31 } else { 31 } else {
32 [output appendFormat:@"%%%02X", thisChar]; 32 [output appendFormat:@"%%%02X", thisChar];
33 } 33 }
34 } 34 }
35 return output; 35 return output;
36 } 36 }
37 @end 37 @end
38 38
39 @implementation ServerAPI 39 @implementation ServerAPI
40 static ServerAPI *_server = nil; 40 static ServerAPI *_server = nil;
41 41
42 NSURLSessionDataTask * searchTask; 42 NSURLSessionDataTask * searchTask;
43 43
44 @synthesize timeOutInterval = _timeOutInterval; 44 @synthesize timeOutInterval = _timeOutInterval;
45 45
46 + (instancetype)server 46 + (instancetype)server
47 { 47 {
48 @synchronized(self) { 48 @synchronized(self) {
49 if (_server == nil) { 49 if (_server == nil) {
50 _server = [[ServerAPI alloc] init]; 50 _server = [[ServerAPI alloc] init];
51 } 51 }
52 } 52 }
53 return _server; 53 return _server;
54 } 54 }
55 55
56 - (instancetype)init 56 - (instancetype)init
57 { 57 {
58 self = [super init]; 58 self = [super init];
59 if (self != nil) { 59 if (self != nil) {
60 self.timeOutInterval = 150; 60 self.timeOutInterval = 150;
61 } 61 }
62 return self; 62 return self;
63 } 63 }
64 64
65 #pragma mark - Login and Register 65 #pragma mark - Login and Register
66 // Login 66 // Login
67 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 67 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
68 { 68 {
69 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 69 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
70 70
71 if (completion == NULL) { 71 if (completion == NULL) {
72 return ; 72 return ;
73 } 73 }
74 74
75 if (error == nil) 75 if (error == nil)
76 { 76 {
77 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 77 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
78 78
79 int status = [dataResult[@"status"] intValue]; 79 int status = [dataResult[@"status"] intValue];
80 if (status == 1) { // status = 1 success 80 if (status == 1) { // status = 1 success
81 NSString *token = dataResult[@"result"][@"token"]; 81 NSString *token = dataResult[@"result"][@"token"];
82 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 82 NSDictionary *dictUser = dataResult[@"result"][@"user"];
83 User *user = [[User alloc] init]; 83 User *user = [[User alloc] init];
84 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 84 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
85 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 85 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
86 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 86 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
87 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 87 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
88 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 88 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
89 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 89 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
90 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 90 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
91 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 91 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
92 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 92 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
93 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 93 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
94 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 94 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
95 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 95 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
96 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 96 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
97 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 97 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
98 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 98 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
99 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 99 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
100 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 100 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
101 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 101 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
102 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 102 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
103 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 103 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
104 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 104 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
105 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 105 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
106 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 106 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
107 completion(user, token, nil); 107 completion(user, token, nil);
108 } 108 }
109 else { // status = 0 error 109 else { // status = 0 error
110 NSString *message = dataResult[@"message"]; 110 NSString *message = dataResult[@"message"];
111 if (message == nil) { 111 if (message == nil) {
112 message = @"Unknown error"; 112 message = @"Unknown error";
113 } 113 }
114 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 114 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
115 completion(nil, nil, loginFaild); 115 completion(nil, nil, loginFaild);
116 } 116 }
117 } 117 }
118 else 118 else
119 { 119 {
120 completion(nil, nil, error); 120 completion(nil, nil, error);
121 } 121 }
122 }]; 122 }];
123 } 123 }
124 124
125 // Register 125 // Register
126 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { 126 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
127 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) { 127 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) {
128 128
129 if (completion == NULL) { 129 if (completion == NULL) {
130 return ; 130 return ;
131 } 131 }
132 132
133 if (error == nil) 133 if (error == nil)
134 { 134 {
135 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 135 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
136 136
137 int status = [dataResult[@"status"] intValue]; 137 int status = [dataResult[@"status"] intValue];
138 if (status == 1) { // status = 1 success 138 if (status == 1) { // status = 1 success
139 NSString *token = dataResult[@"result"][@"token"]; 139 NSString *token = dataResult[@"result"][@"token"];
140 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 140 NSDictionary *dictUser = dataResult[@"result"][@"user"];
141 User *user = [[User alloc] init]; 141 User *user = [[User alloc] init];
142 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 142 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
143 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 143 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
144 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 144 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
145 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 145 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
146 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 146 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
147 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 147 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
148 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 148 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
149 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 149 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
150 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 150 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
151 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 151 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
152 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 152 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
153 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 153 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
154 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 154 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
155 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 155 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
156 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 156 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
157 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 157 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
158 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 158 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
159 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 159 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
160 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 160 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
161 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 161 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
162 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 162 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
163 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 163 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
164 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 164 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
165 completion(user, token, nil); 165 completion(user, token, nil);
166 } 166 }
167 else { // status = 0 error 167 else { // status = 0 error
168 NSString *message = dataResult[@"message"]; 168 NSString *message = dataResult[@"message"];
169 if (message == nil) { 169 if (message == nil) {
170 message = @"Unknown error"; 170 message = @"Unknown error";
171 } 171 }
172 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 172 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
173 completion(nil, nil, loginFaild); 173 completion(nil, nil, loginFaild);
174 } 174 }
175 } 175 }
176 else 176 else
177 { 177 {
178 completion(nil, nil, error); 178 completion(nil, nil, error);
179 } 179 }
180 }]; 180 }];
181 } 181 }
182 182
183 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { 183 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
184 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { 184 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
185 185
186 if (completion == NULL) { 186 if (completion == NULL) {
187 return ; 187 return ;
188 } 188 }
189 189
190 if (error == nil) 190 if (error == nil)
191 { 191 {
192 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 192 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
193 193
194 int status = [dataResult[@"status"] intValue]; 194 int status = [dataResult[@"status"] intValue];
195 if (status == 1) { // status = 1 success 195 if (status == 1) { // status = 1 success
196 completion(nil); 196 completion(nil);
197 } 197 }
198 else { // status = 0 error 198 else { // status = 0 error
199 NSString *message = dataResult[@"message"]; 199 NSString *message = dataResult[@"message"];
200 if (message == nil) { 200 if (message == nil) {
201 message = @"Unknown error"; 201 message = @"Unknown error";
202 } 202 }
203 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 203 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
204 completion(forgetPass); 204 completion(forgetPass);
205 } 205 }
206 } 206 }
207 else 207 else
208 { 208 {
209 completion(error); 209 completion(error);
210 } 210 }
211 }]; 211 }];
212 } 212 }
213 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { 213 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
214 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { 214 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
215 215
216 if (completion == NULL) { 216 if (completion == NULL) {
217 return ; 217 return ;
218 } 218 }
219 219
220 if (error == nil) 220 if (error == nil)
221 { 221 {
222 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 222 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
223 223
224 int status = [dataResult[@"status"] intValue]; 224 int status = [dataResult[@"status"] intValue];
225 if (status == 1) { // status = 1 success 225 if (status == 1) { // status = 1 success
226 completion(nil); 226 completion(nil);
227 } 227 }
228 else { // status = 0 error 228 else { // status = 0 error
229 NSString *message = dataResult[@"message"]; 229 NSString *message = dataResult[@"message"];
230 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 230 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
231 completion(confirmForgetPass); 231 completion(confirmForgetPass);
232 } 232 }
233 } 233 }
234 else 234 else
235 { 235 {
236 completion(error); 236 completion(error);
237 } 237 }
238 }]; 238 }];
239 } 239 }
240 240
241 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 241 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
242 NSDictionary *dict = nil; 242 NSDictionary *dict = nil;
243 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 243 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
244 if (token != nil) { 244 if (token != nil) {
245 dict = @{@"token":token, @"img": base64Encoded}; 245 dict = @{@"token":token, @"img": base64Encoded};
246 } 246 }
247 else { 247 else {
248 dict = @{@"img": base64Encoded}; 248 dict = @{@"img": base64Encoded};
249 } 249 }
250 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 250 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
251 251
252 if (completion == NULL) { 252 if (completion == NULL) {
253 return ; 253 return ;
254 } 254 }
255 255
256 if (error == nil) 256 if (error == nil)
257 { 257 {
258 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 258 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
259 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 259 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
260 completion(image_profile, nil); 260 completion(image_profile, nil);
261 } 261 }
262 else 262 else
263 { 263 {
264 completion(nil, error); 264 completion(nil, error);
265 } 265 }
266 }]; 266 }];
267 } 267 }
268 268
269 -(NSString *) convertIntToString : (int) type { 269 -(NSString *) convertIntToString : (int) type {
270 switch (type) { 270 switch (type) {
271 case 1: 271 case 1:
272 return @"week"; 272 return @"week";
273 break; 273 break;
274 case 2: 274 case 2:
275 return @"oneMonth"; 275 return @"oneMonth";
276 break; 276 break;
277 case 3: 277 case 3:
278 return @"threeMonth"; 278 return @"threeMonth";
279 break; 279 break;
280 case 4: 280 case 4:
281 return @"sixMonth"; 281 return @"sixMonth";
282 break; 282 break;
283 default: 283 default:
284 return @"today"; 284 return @"today";
285 break; 285 break;
286 } 286 }
287 } 287 }
288 288
289 #pragma mark - Home Screen Function 289 #pragma mark - Home Screen Function
290 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion 290 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion
291 { 291 {
292 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 292 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
293 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date]; 293 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date];
294 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 294 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
295 295
296 if (completion == NULL) { 296 if (completion == NULL) {
297 return ; 297 return ;
298 } 298 }
299 299
300 if (error == nil) 300 if (error == nil)
301 { 301 {
302 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 302 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
303 int status = [dataResult[@"status"] intValue]; 303 int status = [dataResult[@"status"] intValue];
304 if (status == 1) { // status = 1 success 304 if (status == 1) { // status = 1 success
305 if(dataResult[@"result"] != nil) { 305 if(dataResult[@"result"] != nil) {
306 NSDictionary * dictResult = dataResult[@"result"]; 306 NSDictionary * dictResult = dataResult[@"result"];
307 TopObject *topObject = [[TopObject alloc] init]; 307 TopObject *topObject = [[TopObject alloc] init];
308 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]]; 308 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]];
309 topObject.targetInfor = targetInfor; 309 topObject.targetInfor = targetInfor;
310 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue]; 310 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue];
311 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue]; 311 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue];
312 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]]; 312 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]];
313 NSMutableArray *arrayStep = [[NSMutableArray alloc] init]; 313 NSMutableArray *arrayStep = [[NSMutableArray alloc] init];
314 NSArray *array = dictResult[@"dataChart"]; 314 NSArray *array = dictResult[@"dataChart"];
315 for(NSDictionary *dict in array) { 315 for(NSDictionary *dict in array) {
316 StepObject *object = [[StepObject alloc] init]; 316 StepObject *object = [[StepObject alloc] init];
317 if([dict objectForKey:@"numStep"] != nil) { 317 if([dict objectForKey:@"numStep"] != nil) {
318 object.step = [dict[@"numStep"] intValue]; 318 object.step = [dict[@"numStep"] intValue];
319 } 319 }
320 if([dict objectForKey:@"hour"] != nil) { 320 if([dict objectForKey:@"hour"] != nil) {
321 object.hour = [dict[@"hour"] intValue]; 321 object.hour = [dict[@"hour"] intValue];
322 } 322 }
323 switch (mode) { 323 switch (mode) {
324 case 1: 324 case 1:
325 object.typeStep = @"walking"; 325 object.typeStep = @"walking";
326 break; 326 break;
327 case 2: 327 case 2:
328 object.typeStep = @"running"; 328 object.typeStep = @"running";
329 break; 329 break;
330 case 3: 330 case 3:
331 object.typeStep = @"bike"; 331 object.typeStep = @"bike";
332 break; 332 break;
333 default: 333 default:
334 break; 334 break;
335 } 335 }
336 [arrayStep addObject:object]; 336 [arrayStep addObject:object];
337 } 337 }
338 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep]; 338 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep];
339 completion(topObject, nil); 339 completion(topObject, nil);
340 } 340 }
341 else { 341 else {
342 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 342 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
343 completion(nil, errorObject); 343 completion(nil, errorObject);
344 } 344 }
345 } 345 }
346 else { 346 else {
347 NSString *message = dataResult[@"message"]; 347 NSString *message = dataResult[@"message"];
348 if (message == nil) { 348 if (message == nil) {
349 message = @"Unknown error"; 349 message = @"Unknown error";
350 } 350 }
351 351
352 if ([message isEqualToString:@"Token is invalid"]) { 352 if ([message isEqualToString:@"Token is invalid"]) {
353 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 353 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
354 [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; 354 [self requestTopWithMode:mode andDate:date CompletionHandler:completion];
355 } 355 }
356 else { 356 else {
357 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 357 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
358 completion(nil, errorObject); 358 completion(nil, errorObject);
359 } 359 }
360 } 360 }
361 } 361 }
362 else 362 else
363 { 363 {
364 completion(nil, error); 364 completion(nil, error);
365 } 365 }
366 }]; 366 }];
367 } 367 }
368 368
369 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion { 369 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion {
370 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 370 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
371 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"]; 371 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"];
372 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate}; 372 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate};
373 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 373 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
374 374
375 if (completion == NULL) { 375 if (completion == NULL) {
376 return ; 376 return ;
377 } 377 }
378 378
379 if (error == nil) 379 if (error == nil)
380 { 380 {
381 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 381 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
382 int status = [dataResult[@"status"] intValue]; 382 int status = [dataResult[@"status"] intValue];
383 if (status == 1) { // status = 1 success 383 if (status == 1) { // status = 1 success
384 completion(nil); 384 completion(nil);
385 } 385 }
386 else { 386 else {
387 NSString *message = dataResult[@"message"]; 387 NSString *message = dataResult[@"message"];
388 if (message == nil) { 388 if (message == nil) {
389 message = @"Unknown error"; 389 message = @"Unknown error";
390 } 390 }
391 391
392 if ([message isEqualToString:@"Token is invalid"]) { 392 if ([message isEqualToString:@"Token is invalid"]) {
393 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 393 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
394 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; 394 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion];
395 } 395 }
396 else { 396 else {
397 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 397 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
398 completion(errorObject); 398 completion(errorObject);
399 } 399 }
400 } 400 }
401 } 401 }
402 else 402 else
403 { 403 {
404 completion(error); 404 completion(error);
405 } 405 }
406 }]; 406 }];
407 } 407 }
408 408
409 #pragma mark - History Screen Function 409 #pragma mark - History Screen Function
410 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 410 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
411 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]]; 411 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]];
412 NSLog(@"requestHistory link %@", url); 412 NSLog(@"requestHistory link %@", url);
413 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 413 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
414 414
415 if (completion == NULL) { 415 if (completion == NULL) {
416 return ; 416 return ;
417 } 417 }
418 418
419 if (error == nil) 419 if (error == nil)
420 { 420 {
421 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 421 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
422 NSLog(@"%@", dataResult); 422 NSLog(@"%@", dataResult);
423 int status = [dataResult[@"status"] intValue]; 423 int status = [dataResult[@"status"] intValue];
424 if (status == 1) { // status = 1 success 424 if (status == 1) { // status = 1 success
425 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 425 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
426 NSDictionary * arrResult = dataResult[@"result"]; 426 NSDictionary * arrResult = dataResult[@"result"];
427 if(arrResult != nil) { 427 if(arrResult != nil) {
428 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil]; 428 /* mode_1: Data for mode walking
429 mode_2: Data for mode running
430 mode_3: Data for mode bike */
431 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_3", @"mode_1", @"mode_2", nil];
429 for(NSString * key in arrayKey) { 432 for(NSString * key in arrayKey) {
430 NSDictionary *mode = [arrResult objectForKey:key]; 433 NSDictionary *mode = [arrResult objectForKey:key];
431 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 434 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
432 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode]; 435 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode];
433 [arrayHistory addObject:objectMode]; 436 [arrayHistory addObject:objectMode];
434 } 437 }
435 else { 438 else {
436 [arrayHistory addObject:[[HistoryObject alloc] init]]; 439 [arrayHistory addObject:[[HistoryObject alloc] init]];
437 } 440 }
438 } 441 }
439 } 442 }
440 completion(arrayHistory, nil); 443 completion(arrayHistory, nil);
441 } 444 }
442 else { 445 else {
443 NSString *message = dataResult[@"message"]; 446 NSString *message = dataResult[@"message"];
444 if (message == nil) { 447 if (message == nil) {
445 message = @"Unknown error"; 448 message = @"Unknown error";
446 } 449 }
447 450
448 if ([message isEqualToString:@"Token is invalid"]) { 451 if ([message isEqualToString:@"Token is invalid"]) {
449 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 452 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
450 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 453 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
451 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 454 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
452 } 455 }
453 else { 456 else {
454 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 457 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
455 completion(nil, errorObject); 458 completion(nil, errorObject);
456 } 459 }
457 } 460 }
458 } 461 }
459 else 462 else
460 { 463 {
461 completion(nil, error); 464 completion(nil, error);
462 } 465 }
463 }]; 466 }];
464 } 467 }
465 468
466 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 469 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
467 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/detail/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]]; 470 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/detail/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]];
468 NSLog(@"requestHistoryList link %@", url); 471 NSLog(@"requestHistoryList link %@", url);
469 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 472 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
470 473
471 if (completion == NULL) { 474 if (completion == NULL) {
472 return ; 475 return ;
473 } 476 }
474 477
475 if (error == nil) 478 if (error == nil)
476 { 479 {
477 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 480 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
478 NSLog(@"%@", dataResult); 481 NSLog(@"%@", dataResult);
479 int status = [dataResult[@"status"] intValue]; 482 int status = [dataResult[@"status"] intValue];
480 if (status == 1) { // status = 1 success 483 if (status == 1) { // status = 1 success
481 if(dataResult[@"result"] != nil) { 484 if(dataResult[@"result"] != nil) {
482 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 485 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
483 NSDictionary * arrResult = dataResult[@"result"]; 486 NSDictionary * arrResult = dataResult[@"result"];
484 if(arrResult != nil) { 487 if(arrResult != nil) {
485 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil]; 488 /* mode_1: Data for mode walking
489 mode_2: Data for mode running
490 mode_3: Data for mode bike */
491 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_3", @"mode_1", @"mode_2", nil];
486 for(NSString * key in arrayKey) { 492 for(NSString * key in arrayKey) {
487 NSDictionary *mode = [arrResult objectForKey:key]; 493 NSDictionary *mode = [arrResult objectForKey:key];
488 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 494 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
489 NSMutableArray *array = [[NSMutableArray alloc] init]; 495 NSMutableArray *array = [[NSMutableArray alloc] init];
490 for(NSString *key in mode.allKeys) { 496 for(NSString *key in mode.allKeys) {
491 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]]; 497 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]];
492 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"]; 498 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"];
493 [array addObject:objectMode]; 499 [array addObject:objectMode];
494 } 500 }
495 [arrayHistory addObject:array]; 501 [arrayHistory addObject:array];
496 } 502 }
497 else { 503 else {
498 [arrayHistory addObject:[[NSArray alloc] init]]; 504 [arrayHistory addObject:[[NSArray alloc] init]];
499 } 505 }
500 } 506 }
501 } 507 }
502 completion(arrayHistory, nil); 508 completion(arrayHistory, nil);
503 } 509 }
504 else { 510 else {
505 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 511 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
506 completion(nil, errorObject); 512 completion(nil, errorObject);
507 } 513 }
508 } 514 }
509 else { 515 else {
510 NSString *message = dataResult[@"message"]; 516 NSString *message = dataResult[@"message"];
511 if (message == nil) { 517 if (message == nil) {
512 message = @"Unknown error"; 518 message = @"Unknown error";
513 } 519 }
514 520
515 if ([message isEqualToString:@"Token is invalid"]) { 521 if ([message isEqualToString:@"Token is invalid"]) {
516 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 522 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
517 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 523 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
518 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 524 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
519 } 525 }
520 else { 526 else {
521 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 527 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
522 completion(nil, errorObject); 528 completion(nil, errorObject);
523 } 529 }
524 } 530 }
525 } 531 }
526 else 532 else
527 { 533 {
528 completion(nil, error); 534 completion(nil, error);
529 } 535 }
530 }]; 536 }];
531 } 537 }
532 538
533 #pragma mark - SNS Screen Function 539 #pragma mark - SNS Screen Function
534 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 540 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
535 NSString *url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?page=%d&record=10", page]; 541 NSString *url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?page=%d&record=10", page];
536 if(groupID > -1) { 542 if(groupID > -1) {
537 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page]; 543 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page];
538 } 544 }
539 NSLog(@"requestTweetsList link %@", url); 545 NSLog(@"requestTweetsList link %@", url);
540 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 546 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
541 547
542 if (completion == NULL) { 548 if (completion == NULL) {
543 return ; 549 return ;
544 } 550 }
545 551
546 if (error == nil) 552 if (error == nil)
547 { 553 {
548 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 554 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
549 NSLog(@"%@", dataResult); 555 NSLog(@"%@", dataResult);
550 int status = [dataResult[@"status"] intValue]; 556 int status = [dataResult[@"status"] intValue];
551 if (status == 1) { // status = 1 success 557 if (status == 1) { // status = 1 success
552 if(dataResult[@"result"] != nil) { 558 if(dataResult[@"result"] != nil) {
553 NSArray * array = dataResult[@"result"]; 559 NSArray * array = dataResult[@"result"];
554 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 560 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
555 for(NSDictionary * dict in array) { 561 for(NSDictionary * dict in array) {
556 TweetObject * object = [[TweetObject alloc] initWithData:dict]; 562 TweetObject * object = [[TweetObject alloc] initWithData:dict];
557 [arrayTweets addObject:object]; 563 [arrayTweets addObject:object];
558 } 564 }
559 completion(arrayTweets, nil); 565 completion(arrayTweets, nil);
560 } 566 }
561 else { 567 else {
562 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 568 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
563 completion(nil, errorObject); 569 completion(nil, errorObject);
564 } 570 }
565 } 571 }
566 else { 572 else {
567 NSString *message = dataResult[@"message"]; 573 NSString *message = dataResult[@"message"];
568 if (message == nil) { 574 if (message == nil) {
569 message = @"Unknown error"; 575 message = @"Unknown error";
570 } 576 }
571 577
572 if ([message isEqualToString:@"Token is invalid"]) { 578 if ([message isEqualToString:@"Token is invalid"]) {
573 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 579 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
574 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 580 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
575 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 581 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
576 } 582 }
577 else { 583 else {
578 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 584 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
579 completion(nil, errorObject); 585 completion(nil, errorObject);
580 } 586 }
581 } 587 }
582 } 588 }
583 else 589 else
584 { 590 {
585 completion(nil, error); 591 completion(nil, error);
586 } 592 }
587 }]; 593 }];
588 } 594 }
589 595
590 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 596 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
591 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"]; 597 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"];
592 NSLog(@"searchGroup link %@ page %d", url, page); 598 NSLog(@"searchGroup link %@ page %d", url, page);
593 if(searchTask != nil) { 599 if(searchTask != nil) {
594 [searchTask cancel]; 600 [searchTask cancel];
595 } 601 }
596 602
597 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) { 603 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) {
598 searchTask = nil; 604 searchTask = nil;
599 if (completion == NULL) { 605 if (completion == NULL) {
600 return ; 606 return ;
601 } 607 }
602 608
603 if (error == nil) 609 if (error == nil)
604 { 610 {
605 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 611 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
606 NSLog(@"%@", dataResult); 612 NSLog(@"%@", dataResult);
607 int status = [dataResult[@"status"] intValue]; 613 int status = [dataResult[@"status"] intValue];
608 if (status == 1) { // status = 1 success 614 if (status == 1) { // status = 1 success
609 if(dataResult[@"result"] != nil) { 615 if(dataResult[@"result"] != nil) {
610 NSArray * array = dataResult[@"result"]; 616 NSArray * array = dataResult[@"result"];
611 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 617 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
612 for(NSDictionary * dict in array) { 618 for(NSDictionary * dict in array) {
613 GroupObject * object = [[GroupObject alloc] initWithData:dict]; 619 GroupObject * object = [[GroupObject alloc] initWithData:dict];
614 [arrayTweets addObject:object]; 620 [arrayTweets addObject:object];
615 } 621 }
616 completion(arrayTweets, nil); 622 completion(arrayTweets, nil);
617 } 623 }
618 else { 624 else {
619 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
620 completion(nil, errorObject); 626 completion(nil, errorObject);
621 } 627 }
622 } 628 }
623 else { 629 else {
624 NSString *message = dataResult[@"message"]; 630 NSString *message = dataResult[@"message"];
625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 631 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
626 completion(nil, errorObject); 632 completion(nil, errorObject);
627 } 633 }
628 } 634 }
629 else 635 else
630 { 636 {
631 completion(nil, error); 637 completion(nil, error);
632 } 638 }
633 }]; 639 }];
634 } 640 }
635 641
636 #pragma mark - Group Function 642 #pragma mark - Group Function
637 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 643 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
638 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"]; 644 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
639 NSLog(@"requestCreateGroup link %@", url); 645 NSLog(@"requestCreateGroup link %@", url);
640 NSDictionary * dict = @{@"group_name":group.name, 646 NSDictionary * dict = @{@"group_name":group.name,
641 @"goal":group.goal, 647 @"goal":group.goal,
642 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode], 648 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
643 @"run_mode_active":[NSNumber numberWithBool:group.runMode], 649 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
644 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode], 650 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
645 @"step_mode_active":[NSNumber numberWithBool:group.stepMode], 651 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
646 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode], 652 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
647 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode], 653 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
648 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal], 654 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
649 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal], 655 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
650 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]}; 656 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
651 657
652 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 658 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
653 659
654 if (completion == NULL) { 660 if (completion == NULL) {
655 return ; 661 return ;
656 } 662 }
657 663
658 if (error == nil) 664 if (error == nil)
659 { 665 {
660 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 666 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
661 NSLog(@"%@", dataResult); 667 NSLog(@"%@", dataResult);
662 int status = [dataResult[@"status"] intValue]; 668 int status = [dataResult[@"status"] intValue];
663 if (status == 1) { // status = 1 success 669 if (status == 1) { // status = 1 success
664 if(dataResult[@"result"] != nil) { 670 if(dataResult[@"result"] != nil) {
665 NSDictionary * dict = dataResult[@"result"]; 671 NSDictionary * dict = dataResult[@"result"];
666 group.groupID = [dict[@"group_id"] intValue]; 672 group.groupID = [dict[@"group_id"] intValue];
667 completion(group, nil); 673 completion(group, nil);
668 } 674 }
669 else { 675 else {
670 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 676 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
671 completion(nil, errorObject); 677 completion(nil, errorObject);
672 } 678 }
673 } 679 }
674 else { 680 else {
675 NSString *message = dataResult[@"message"]; 681 NSString *message = dataResult[@"message"];
676 if (message == nil) { 682 if (message == nil) {
677 message = @"Unknown error"; 683 message = @"Unknown error";
678 } 684 }
679 685
680 if ([message isEqualToString:@"Token is invalid"]) { 686 if ([message isEqualToString:@"Token is invalid"]) {
681 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 687 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
682 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 688 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
683 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; 689 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
684 } 690 }
685 else { 691 else {
686 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 692 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
687 completion(nil, errorObject); 693 completion(nil, errorObject);
688 } 694 }
689 } 695 }
690 } 696 }
691 else 697 else
692 { 698 {
693 completion(nil, error); 699 completion(nil, error);
694 } 700 }
695 }]; 701 }];
696 } 702 }
697 703
698 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 704 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
699 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 705 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
700 NSLog(@"getGroupDetail link %@", url); 706 NSLog(@"getGroupDetail link %@", url);
701 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 707 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
702 708
703 if (completion == NULL) { 709 if (completion == NULL) {
704 return ; 710 return ;
705 } 711 }
706 712
707 if (error == nil) 713 if (error == nil)
708 { 714 {
709 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 715 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
710 NSLog(@"%@", dataResult); 716 NSLog(@"%@", dataResult);
711 int status = [dataResult[@"status"] intValue]; 717 int status = [dataResult[@"status"] intValue];
712 if (status == 1) { // status = 1 success 718 if (status == 1) { // status = 1 success
713 if(dataResult[@"result"] != nil) { 719 if(dataResult[@"result"] != nil) {
714 NSArray * array = dataResult[@"result"]; 720 NSArray * array = dataResult[@"result"];
715 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 721 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
716 completion(object, nil); 722 completion(object, nil);
717 } 723 }
718 else { 724 else {
719 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 725 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
720 completion(nil, errorObject); 726 completion(nil, errorObject);
721 } 727 }
722 } 728 }
723 else { 729 else {
724 NSString *message = dataResult[@"message"]; 730 NSString *message = dataResult[@"message"];
725 if (message == nil) { 731 if (message == nil) {
726 message = @"Unknown error"; 732 message = @"Unknown error";
727 } 733 }
728 734
729 if ([message isEqualToString:@"Token is invalid"]) { 735 if ([message isEqualToString:@"Token is invalid"]) {
730 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 736 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
731 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 737 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
732 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 738 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
733 } 739 }
734 else { 740 else {
735 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 741 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
736 completion(nil, errorObject); 742 completion(nil, errorObject);
737 } 743 }
738 } 744 }
739 } 745 }
740 else 746 else
741 { 747 {
742 completion(nil, error); 748 completion(nil, error);
743 } 749 }
744 }]; 750 }];
745 } 751 }
746 752
747 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 753 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
748 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page]; 754 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page];
749 NSLog(@"requestMemberList link %@ page %d", url, page); 755 NSLog(@"requestMemberList link %@ page %d", url, page);
750 756
751 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 757 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
752 if (completion == NULL) { 758 if (completion == NULL) {
753 return ; 759 return ;
754 } 760 }
755 761
756 if (error == nil) 762 if (error == nil)
757 { 763 {
758 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 764 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
759 NSLog(@"%@", dataResult); 765 NSLog(@"%@", dataResult);
760 int status = [dataResult[@"status"] intValue]; 766 int status = [dataResult[@"status"] intValue];
761 if (status == 1) { // status = 1 success 767 if (status == 1) { // status = 1 success
762 if(dataResult[@"result"] != nil) { 768 if(dataResult[@"result"] != nil) {
763 NSArray * array = dataResult[@"result"]; 769 NSArray * array = dataResult[@"result"];
764 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 770 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
765 for(NSDictionary * dict in array) { 771 for(NSDictionary * dict in array) {
766 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 772 MemberObject * object = [[MemberObject alloc] initWithData:dict];
767 [arrayTweets addObject:object]; 773 [arrayTweets addObject:object];
768 } 774 }
769 completion(arrayTweets, nil); 775 completion(arrayTweets, nil);
770 } 776 }
771 else { 777 else {
772 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 778 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
773 completion(nil, errorObject); 779 completion(nil, errorObject);
774 } 780 }
775 } 781 }
776 else { 782 else {
777 NSString *message = dataResult[@"message"]; 783 NSString *message = dataResult[@"message"];
778 if (message == nil) { 784 if (message == nil) {
779 message = @"Unknown error"; 785 message = @"Unknown error";
780 } 786 }
781 787
782 if ([message isEqualToString:@"Token is invalid"]) { 788 if ([message isEqualToString:@"Token is invalid"]) {
783 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 789 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
784 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 790 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
785 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 791 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
786 } 792 }
787 else { 793 else {
788 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 794 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
789 completion(nil, errorObject); 795 completion(nil, errorObject);
790 } 796 }
791 } 797 }
792 } 798 }
793 else 799 else
794 { 800 {
795 completion(nil, error); 801 completion(nil, error);
796 } 802 }
797 }]; 803 }];
798 } 804 }
799 805
800 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 806 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
801 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 807 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
802 NSLog(@"requestJoinGroup link %@", url); 808 NSLog(@"requestJoinGroup link %@", url);
803 809
804 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 810 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
805 if (completion == NULL) { 811 if (completion == NULL) {
806 return ; 812 return ;
807 } 813 }
808 814
809 if (error == nil) 815 if (error == nil)
810 { 816 {
811 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 817 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
812 NSLog(@"%@", dataResult); 818 NSLog(@"%@", dataResult);
813 int status = [dataResult[@"status"] intValue]; 819 int status = [dataResult[@"status"] intValue];
814 if (status == 1) { // status = 1 success 820 if (status == 1) { // status = 1 success
815 if(dataResult[@"result"] != nil) { 821 if(dataResult[@"result"] != nil) {
816 completion(nil); 822 completion(nil);
817 } 823 }
818 else { 824 else {
819 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 825 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
820 completion(errorObject); 826 completion(errorObject);
821 } 827 }
822 } 828 }
823 else { 829 else {
824 NSString *message = dataResult[@"message"]; 830 NSString *message = dataResult[@"message"];
825 if ([message isEqualToString:@"Token is invalid"]) { 831 if ([message isEqualToString:@"Token is invalid"]) {
826 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 832 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
827 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 833 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
828 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 834 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
829 } 835 }
830 else { 836 else {
831 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 837 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
832 completion(errorObject); 838 completion(errorObject);
833 } 839 }
834 } 840 }
835 } 841 }
836 else 842 else
837 { 843 {
838 completion(error); 844 completion(error);
839 } 845 }
840 }]; 846 }];
841 } 847 }
842 848
843 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 849 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
844 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"]; 850 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"];
845 NSLog(@"requestGroupList link %@", url); 851 NSLog(@"requestGroupList link %@", url);
846 852
847 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 853 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
848 if (completion == NULL) { 854 if (completion == NULL) {
849 return ; 855 return ;
850 } 856 }
851 857
852 if (error == nil) 858 if (error == nil)
853 { 859 {
854 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 860 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
855 NSLog(@"%@", dataResult); 861 NSLog(@"%@", dataResult);
856 int status = [dataResult[@"status"] intValue]; 862 int status = [dataResult[@"status"] intValue];
857 if (status == 1) { // status = 1 success 863 if (status == 1) { // status = 1 success
858 if(dataResult[@"result"] != nil) { 864 if(dataResult[@"result"] != nil) {
859 NSArray * array = dataResult[@"result"]; 865 NSArray * array = dataResult[@"result"];
860 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init]; 866 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init];
861 for(NSDictionary * dict in array) { 867 for(NSDictionary * dict in array) {
862 GroupObject * object = [[GroupObject alloc] initWithShortData:dict]; 868 GroupObject * object = [[GroupObject alloc] initWithShortData:dict];
863 [arrayGroup addObject:object]; 869 [arrayGroup addObject:object];
864 } 870 }
865 completion(arrayGroup, nil); 871 completion(arrayGroup, nil);
866 } 872 }
867 else { 873 else {
868 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 874 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
869 completion(nil, errorObject); 875 completion(nil, errorObject);
870 } 876 }
871 } 877 }
872 else { 878 else {
873 NSString *message = dataResult[@"message"]; 879 NSString *message = dataResult[@"message"];
874 if (message == nil) { 880 if (message == nil) {
875 message = @"Unknown error"; 881 message = @"Unknown error";
876 } 882 }
877 883
878 if ([message isEqualToString:@"Token is invalid"]) { 884 if ([message isEqualToString:@"Token is invalid"]) {
879 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 885 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
880 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 886 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
881 [self requestGroupList:tokenNew CompletionHandler:completion]; 887 [self requestGroupList:tokenNew CompletionHandler:completion];
882 } 888 }
883 else { 889 else {
884 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 890 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
885 completion(nil, errorObject); 891 completion(nil, errorObject);
886 } 892 }
887 } 893 }
888 } 894 }
889 else 895 else
890 { 896 {
891 completion(nil, error); 897 completion(nil, error);
892 } 898 }
893 }]; 899 }];
894 } 900 }
895 901
896 #pragma mark - Ranking API 902 #pragma mark - Ranking API
897 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 903 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
898 NSString *url = [kServerAddress stringByAppendingFormat:@"api/ranking/%d/%@/%@/%d", mode, [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""], page]; 904 NSString *url = [kServerAddress stringByAppendingFormat:@"api/ranking/%d/%@/%@/%d", mode, [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""], page];
899 NSLog(@"requestRaningList link %@", url); 905 NSLog(@"requestRaningList link %@", url);
900 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 906 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
901 907
902 if (completion == NULL) { 908 if (completion == NULL) {
903 return ; 909 return ;
904 } 910 }
905 911
906 if (error == nil) 912 if (error == nil)
907 { 913 {
908 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 914 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
909 NSLog(@"%@", dataResult); 915 NSLog(@"%@", dataResult);
910 int status = [dataResult[@"status"] intValue]; 916 int status = [dataResult[@"status"] intValue];
911 if (status == 1) { // status = 1 success 917 if (status == 1) { // status = 1 success
912 NSArray * array = dataResult[@"result"]; 918 NSArray * array = dataResult[@"result"];
913 NSMutableArray * arrayRanking = [[NSMutableArray alloc] init]; 919 NSMutableArray * arrayRanking = [[NSMutableArray alloc] init];
914 for(NSDictionary * dict in array) { 920 for(NSDictionary * dict in array) {
915 RankingObject * object = [[RankingObject alloc] initWithData:dict]; 921 RankingObject * object = [[RankingObject alloc] initWithData:dict];
916 [arrayRanking addObject:object]; 922 [arrayRanking addObject:object];
917 } 923 }
918 completion(arrayRanking, nil); 924 completion(arrayRanking, nil);
919 } 925 }
920 else { 926 else {
921 NSString *message = dataResult[@"message"]; 927 NSString *message = dataResult[@"message"];
922 if (message == nil) { 928 if (message == nil) {
923 message = @"Unknown error"; 929 message = @"Unknown error";
924 } 930 }
925 931
926 if ([message isEqualToString:@"Token is invalid"]) { 932 if ([message isEqualToString:@"Token is invalid"]) {
927 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 933 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
928 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 934 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
929 [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion]; 935 [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion];
930 } 936 }
931 else { 937 else {
932 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 938 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
933 completion(nil, errorObject); 939 completion(nil, errorObject);
934 } 940 }
935 } 941 }
936 } 942 }
937 else 943 else
938 { 944 {
939 completion(nil, error); 945 completion(nil, error);
940 } 946 }
941 }]; 947 }];
942 } 948 }
943 949
944 #pragma mark - Common API 950 #pragma mark - Common API
945 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 951 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
946 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 952 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
947 953
948 if (completion == NULL) { 954 if (completion == NULL) {
949 return ; 955 return ;
950 } 956 }
951 957
952 if (error == nil) 958 if (error == nil)
953 { 959 {
954 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 960 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
955 961
956 int status = [dataResult[@"status"] intValue]; 962 int status = [dataResult[@"status"] intValue];
957 if (status == 1) { // status = 1 success 963 if (status == 1) { // status = 1 success
958 NSArray *arrayResult = dataResult[@"result"]; 964 NSArray *arrayResult = dataResult[@"result"];
959 if (arrayResult.count > 0) { 965 if (arrayResult.count > 0) {
960 NSString *token = arrayResult[0]; 966 NSString *token = arrayResult[0];
961 completion(token, nil); 967 completion(token, nil);
962 } 968 }
963 else { 969 else {
964 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 970 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
965 completion(nil, errorObject); 971 completion(nil, errorObject);
966 } 972 }
967 973
968 } 974 }
969 else { // status = 0 error 975 else { // status = 0 error
970 NSString *message = dataResult[@"message"]; 976 NSString *message = dataResult[@"message"];
971 if (message == nil) { 977 if (message == nil) {
972 message = @"Unknown error"; 978 message = @"Unknown error";
973 } 979 }
974 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 980 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
975 completion(nil, loginFaild); 981 completion(nil, loginFaild);
976 } 982 }
977 } 983 }
978 else 984 else
979 { 985 {
980 completion(nil, error); 986 completion(nil, error);
981 } 987 }
982 }]; 988 }];
983 } 989 }
984 990
985 #pragma mark - Private Function 991 #pragma mark - Private Function
986 - (void) checkToken { 992 - (void) checkToken {
987 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 993 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
988 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 994 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
989 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 995 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
990 if (user != nil) { 996 if (user != nil) {
991 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 997 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
992 if (error == nil) { 998 if (error == nil) {
993 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 999 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
994 [[NSUserDefaults standardUserDefaults] synchronize]; 1000 [[NSUserDefaults standardUserDefaults] synchronize];
995 } 1001 }
996 }]; 1002 }];
997 } 1003 }
998 } 1004 }
999 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 1005 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
1000 { 1006 {
1001 NSMutableArray *parts = [[NSMutableArray alloc] init]; 1007 NSMutableArray *parts = [[NSMutableArray alloc] init];
1002 for (id key in dictionary) 1008 for (id key in dictionary)
1003 { 1009 {
1004 NSString *encodedValue = [[dictionary[key] description] urlencode]; 1010 NSString *encodedValue = [[dictionary[key] description] urlencode];
1005 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 1011 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
1006 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 1012 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
1007 [parts addObject:part]; 1013 [parts addObject:part];
1008 } 1014 }
1009 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 1015 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
1010 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 1016 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
1011 } 1017 }
1012 1018
1013 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 1019 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
1014 { 1020 {
1015 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 1021 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
1016 request.HTTPMethod = method; 1022 request.HTTPMethod = method;
1017 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 1023 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
1018 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 1024 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
1019 if(token != nil && ![token isEqual: @""]) { 1025 if(token != nil && ![token isEqual: @""]) {
1020 [request setValue: token forHTTPHeaderField: @"token"]; 1026 [request setValue: token forHTTPHeaderField: @"token"];
1021 } 1027 }
1022 [request setTimeoutInterval:self.timeOutInterval]; 1028 [request setTimeoutInterval:self.timeOutInterval];
1023 1029
1024 if (paras != nil) 1030 if (paras != nil)
1025 { 1031 {
1026 NSData *encodedData = [self _encodeDictionary: paras]; 1032 NSData *encodedData = [self _encodeDictionary: paras];
1027 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 1033 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
1028 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 1034 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
1029 [request setHTTPBody: encodedData]; 1035 [request setHTTPBody: encodedData];
1030 } 1036 }
1031 1037
1032 NSURLSession *session = [NSURLSession sharedSession]; 1038 NSURLSession *session = [NSURLSession sharedSession];
1033 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 1039 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
1034 completionHandler: 1040 completionHandler:
1035 ^(NSData *data, NSURLResponse *response, NSError *error) { 1041 ^(NSData *data, NSURLResponse *response, NSError *error) {
1036 if (completion == NULL) { 1042 if (completion == NULL) {
1037 return ; 1043 return ;
1038 } 1044 }
1039 if (error == nil) 1045 if (error == nil)
1040 { 1046 {
1041 completion(data, nil); 1047 completion(data, nil);
1042 } 1048 }
1043 else 1049 else
1044 { 1050 {
1045 completion(nil, error); 1051 completion(nil, error);
1046 } 1052 }
1047 }]; 1053 }];
1048 [task resume]; 1054 [task resume];
1049 return task; 1055 return task;
1050 } 1056 }
1051 1057
1052 -(void)waitUntilDone:(void(^)(void))waitBlock { 1058 -(void)waitUntilDone:(void(^)(void))waitBlock {
1053 //use your statement or call method here 1059 //use your statement or call method here
1054 if(waitBlock){ 1060 if(waitBlock){
1055 waitBlock(); 1061 waitBlock();
1056 } 1062 }
1057 } 1063 }
1058 1064
1059 @end 1065 @end
1060 1066