diff --git a/lib/Shelley b/lib/Shelley index fa1b642..2fd9c59 160000 --- a/lib/Shelley +++ b/lib/Shelley @@ -1 +1 @@ -Subproject commit fa1b64247f41ec81acb623a44279c814f88eb72c +Subproject commit 2fd9c5978893b593b03a2d65dceed0f7c7628f97 diff --git a/src/SelectorEngineRegistry.h b/src/SelectorEngineRegistry.h index c1118e5..2f55657 100644 --- a/src/SelectorEngineRegistry.h +++ b/src/SelectorEngineRegistry.h @@ -21,4 +21,5 @@ + (NSArray *) selectViewsWithEngineNamed:(NSString *)engineName usingSelector:(NSString *)selector; + (NSArray *)getEngineNames; ++ (id)engineForName:(NSString *)engineName; @end diff --git a/src/SelectorEngineRegistry.m b/src/SelectorEngineRegistry.m index f0abc7b..21e9a24 100644 --- a/src/SelectorEngineRegistry.m +++ b/src/SelectorEngineRegistry.m @@ -32,4 +32,8 @@ + (NSArray *) selectViewsWithEngineNamed:(NSString *)engineName usingSelector:(N + (NSArray *)getEngineNames { return [s_engines allKeys]; } + ++ (id)engineForName:(NSString *)engineName { + return [s_engines objectForKey:engineName]; +} @end diff --git a/src/VersionCommand.m b/src/VersionCommand.m index e9b564f..4e315f7 100644 --- a/src/VersionCommand.m +++ b/src/VersionCommand.m @@ -7,6 +7,8 @@ // #import "VersionCommand.h" +#import "SelectorEngineRegistry.h" +#import "JSON.h" @implementation VersionCommand { NSString *_version; @@ -28,7 +30,23 @@ - (void)dealloc } - (NSString *)handleCommandWithRequestBody:(NSString *)requestBody { - return [NSString stringWithFormat:@"{\"version\":\"%@\"}",_version]; + NSMutableDictionary *engineVersions = [NSMutableDictionary dictionary]; + for (NSString *engineName in [SelectorEngineRegistry getEngineNames]) { + id engine = [SelectorEngineRegistry engineForName:engineName]; + SEL versionSel = @selector(version); + if ([engine respondsToSelector:versionSel]) { + NSDictionary *engineVersionData = [engine performSelector:versionSel]; + [engineVersions setObject:engineVersionData forKey:engineName]; + } + else { + [engineVersions setObject:[NSNull null] forKey:engineName]; + } + } + NSDictionary *versionResult = [NSDictionary dictionaryWithObjectsAndKeys: + _version, @"version", + engineVersions, @"engines", + nil]; + return TO_JSON(versionResult); } @end \ No newline at end of file