}
}
+- (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
#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;
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
{
#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
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];