From eac83a4d0d2642524381c05d740fc72086f7e58f Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Sat, 29 Mar 2014 09:21:23 -0700 Subject: [PATCH] Added JSON support to GCDWebServerDataResponse --- CGDWebServer/GCDWebServerResponse.h | 2 ++ CGDWebServer/GCDWebServerResponse.m | 13 +++++++++++++ 2 files changed, 15 insertions(+) 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