diff --git a/CGDWebServer/GCDWebServerResponse.h b/CGDWebServer/GCDWebServerResponse.h index ad2924d..ea77c04 100644 --- a/CGDWebServer/GCDWebServerResponse.h +++ b/CGDWebServer/GCDWebServerResponse.h @@ -62,9 +62,11 @@ + (GCDWebServerDataResponse*)responseWithText:(NSString*)text; + (GCDWebServerDataResponse*)responseWithHTML:(NSString*)html; + (GCDWebServerDataResponse*)responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables; ++ (GCDWebServerDataResponse*)responseWithJSONObject:(id)object; - (id)initWithText:(NSString*)text; // Encodes using UTF-8 - (id)initWithHTML:(NSString*)html; // Encodes using UTF-8 - (id)initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables; // Simple template system that replaces all occurences of "%variable%" with corresponding value (encodes using UTF-8) +- (id)initWithJSONObject:(id)object; @end @interface GCDWebServerFileResponse : GCDWebServerResponse diff --git a/CGDWebServer/GCDWebServerResponse.m b/CGDWebServer/GCDWebServerResponse.m index 57731c7..1f9ffa9 100644 --- a/CGDWebServer/GCDWebServerResponse.m +++ b/CGDWebServer/GCDWebServerResponse.m @@ -211,6 +211,10 @@ return ARC_AUTORELEASE([[self alloc] initWithHTMLTemplate:path variables:variables]); } ++ (GCDWebServerDataResponse*)responseWithJSONObject:(id)object { + return ARC_AUTORELEASE([[self alloc] initWithJSONObject:object]); +} + - (id)initWithText:(NSString*)text { NSData* data = [text dataUsingEncoding:NSUTF8StringEncoding]; if (data == nil) { @@ -241,6 +245,15 @@ return response; } +- (id)initWithJSONObject:(id)object { + NSData* data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; + if (data == nil) { + ARC_RELEASE(self); + return nil; + } + return [self initWithData:data contentType:@"application/json"]; +} + @end @implementation GCDWebServerFileResponse