OSDN Git Service

HMAPIResultを使用するように変更
authormasakih <masakih@users.sourceforge.jp>
Thu, 21 May 2015 14:34:23 +0000 (23:34 +0900)
committermasakih <masakih@users.sourceforge.jp>
Thu, 21 May 2015 14:34:23 +0000 (23:34 +0900)
KCD/HMCompositCommand.m
KCD/HMJSONCommand.h
KCD/HMJSONCommand.m
KCD/HMJSONReciever.m
KCD/HMJSONTracker.m

index 72d4be5..12392d7 100644 (file)
        }
 }
 
+- (void)setJson:(id)json
+{
+       for(id command in self.commands) {
+               [command setJson:json];
+       }
+}
+- (void)setArguments:(NSDictionary *)arguments
+{
+       for(id command in self.commands) {
+               [command setArguments:arguments];
+       }
+}
+
 
 @end
index 13d2431..2589877 100644 (file)
@@ -8,9 +8,13 @@
 
 #import <Foundation/Foundation.h>
 
+#import "HMAPIResult.h"
+
+
 @interface HMJSONCommand : NSObject
 
 + (HMJSONCommand *)commandForAPI:(NSString *)api;
++ (HMJSONCommand *)commandForAPIResult:(HMAPIResult *)apiResult;
 
 @property (copy) NSString *argumentsString;
 @property (strong) NSData *jsonData;
index bac6999..694c172 100644 (file)
@@ -64,6 +64,42 @@ static NSMutableArray *registeredCommands = nil;
        
        return nil;
 }
++ (HMJSONCommand *)commandForAPIResult:(HMAPIResult *)apiResult
+{
+       for(Class commandClass in registeredCommands) {
+               if([commandClass canExcuteAPI:apiResult.api]) {
+                       HMJSONCommand *command =  [commandClass new];
+                       command.api = apiResult.api;
+                       command.arguments = apiResult.parameter;
+                       command.json = apiResult.json;
+                       
+#if ENABLE_JSON_LOG_HANDLED_API
+                       HMJSONViewCommand *viewCommand = [HMJSONViewCommand new];
+                       viewCommand.api = apiResult.api;
+                       viewCommand.arguments = apiResult.parameter;
+                       viewCommand.json = apiResult.json;
+                       viewCommand.argumentArray = apiResult.argumentArray;
+                       viewCommand.jsonTree = @[[HMJSONNode nodeWithJSON:apiResult.json]];
+                       viewCommand.recieveDate = apiResult.date;
+                       
+                       command = [HMCompositCommand compositCommandWithCommands:command, viewCommand, nil];
+#endif
+                       return command;
+               }
+       }
+#if ENABLE_JSON_LOG
+       HMJSONViewCommand *viewCommand = [HMJSONViewCommand new];
+       viewCommand.api = apiResult.api;
+       viewCommand.arguments = apiResult.parameter;
+       viewCommand.json = apiResult.json;
+       viewCommand.argumentArray = apiResult.argumentArray;
+       viewCommand.jsonTree = @[[HMJSONNode nodeWithJSON:apiResult.json]];
+       viewCommand.recieveDate = apiResult.date;
+       return viewCommand;
+#endif
+       
+       return nil;
+}
 
 + (void)registerClass:(Class)commandClass
 {
index bfa6651..659be7a 100644 (file)
@@ -10,6 +10,7 @@
 
 #import "CustomHTTPProtocol.h"
 #import "HMAppDelegate.h"
+#import "HMAPIResult.h"
 
 
 @interface HMJSONReciever ()
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        [[NSApp delegate] logLineReturn:@"body -> \n%@", string];
 #else
-       NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
-       NSArray *elements = [string componentsSeparatedByString:@"="];
-       if([elements count] != 2) {
-               HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
-               [appDelegate logLineReturn:@"\e[1mwe could not compose data. api -> %@. Number of elements:\e[22m %ld", protocol.request.URL.path, [elements count]];
-               [appDelegate logLineReturn:@"Original strings -> %@", string];
-               [self removeDataForProtocol:protocol];
-               return;
-       }
-       NSData *JSONData = [elements[1] dataUsingEncoding:NSUTF8StringEncoding];
-       
-       NSData *requestBodyData = [protocol.request HTTPBody];
-       NSString *requestBodyString = [[NSString alloc] initWithData:requestBodyData encoding:NSUTF8StringEncoding];
-       
-       [self.queueu enqueue:@{@"api" : protocol.request.URL.path, @"argument": requestBodyString, @"json" : JSONData, @"date": [NSDate dateWithTimeIntervalSinceNow:0]}];
+//     NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
+//     NSArray *elements = [string componentsSeparatedByString:@"="];
+//     if([elements count] != 2) {
+//             HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
+//             [appDelegate logLineReturn:@"\e[1mwe could not compose data. api -> %@. Number of elements:\e[22m %ld", protocol.request.URL.path, [elements count]];
+//             [appDelegate logLineReturn:@"Original strings -> %@", string];
+//             [self removeDataForProtocol:protocol];
+//             return;
+//     }
+//     NSData *JSONData = [elements[1] dataUsingEncoding:NSUTF8StringEncoding];
+//     
+//     NSData *requestBodyData = [protocol.request HTTPBody];
+//     NSString *requestBodyString = [[NSString alloc] initWithData:requestBodyData encoding:NSUTF8StringEncoding];
+       HMAPIResult *apiResult = [[HMAPIResult alloc] initWithRequest:protocol.request data:data];
+//     NSLog(@"api -> %@", apiResult.api);
+//     NSLog(@"success -> %@", apiResult.success ? @"YES" : @"NO");
+//     if(apiResult.success) {
+//             NSLog(@"json -> %@", apiResult.json);
+//             NSLog(@"param -> %@", apiResult.parameter);
+//     }
        
+//     [self.queueu enqueue:@{@"api" : protocol.request.URL.path, @"argument": requestBodyString, @"json" : JSONData, @"date": [NSDate dateWithTimeIntervalSinceNow:0]}];
+       [self.queueu enqueue:apiResult];
 #endif
        
        
index b55ed32..5a77eee 100644 (file)
@@ -47,11 +47,13 @@ static HMJSONTracker *sTracker = nil;
                while(YES) {
                        @autoreleasepool {
                                @try {
-                                       NSDictionary *item = [self.queue dequeue];
-                                       HMJSONCommand *command = [HMJSONCommand commandForAPI:[item objectForKey:@"api"]];
-                                       command.argumentsString = [item objectForKey:@"argument"];
-                                       command.jsonData = [item objectForKey:@"json"];
-                                       command.recieveDate = [item objectForKey:@"date"];
+                                       id item = [self.queue dequeue];
+//                                     HMJSONCommand *command = [HMJSONCommand commandForAPI:[item objectForKey:@"api"]];
+//                                     command.argumentsString = [item objectForKey:@"argument"];
+//                                     command.jsonData = [item objectForKey:@"json"];
+//                                     command.recieveDate = [item objectForKey:@"date"];
+                                       
+                                       HMJSONCommand *command = [HMJSONCommand commandForAPIResult:item];
                                        
                                        [command execute];
                                        [NSThread sleepForTimeInterval:0.1];