From 1684726f5d5e424f924afab65b7b4a2b0ca39efa Mon Sep 17 00:00:00 2001 From: Marcus Westin Date: Thu, 11 Oct 2012 18:53:45 -0700 Subject: [PATCH] attempt to infer the mime type for a given response without a given mime type. Infer from the request URL path extension --- README.md | 4 ++++ WebViewProxy/WebViewProxy.m | 23 ++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5952f5a..be056c5 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,8 @@ Examples Respond with the given data and mime type (the mime type gets sent as the HTTP header `Content-Type`). +If mimeType is nil, WebWiewProxy attempts to infer it from the request URL path extension. + Examples NSString* greeting = @"Hi!"; @@ -151,6 +153,8 @@ Examples Respond with the given data, mime type and HTTP status code (the mime type gets sent as the HTTP header `Content-Type`). +If mimeType is nil, WebWiewProxy attempts to infer it from the request URL path extension. + Examples NSData* data = [@"
Item has been created
" dataUsingEncoding:NSUTF8StringEncoding]; diff --git a/WebViewProxy/WebViewProxy.m b/WebViewProxy/WebViewProxy.m index 1a911ef..4bedaaf 100644 --- a/WebViewProxy/WebViewProxy.m +++ b/WebViewProxy/WebViewProxy.m @@ -41,20 +41,21 @@ - (NSURLRequest *)request { } // High level API - (void)respondWithImage:(UIImage *)image { - NSURL* url = _protocol.request.URL; - NSString* mimeType = nil; NSData* data = nil; - if ([url.pathExtension isEqualToString:@"jpg"] || [url.pathExtension isEqualToString:@"jpeg"]) { + NSString* mimeType = nil; + NSString* extension = self.request.URL.pathExtension; + if ([extension isEqualToString:@"jpg"] || [extension isEqualToString:@"jpeg"]) { mimeType = @"image/jpg"; data = UIImageJPEGRepresentation(image, 1.0); } else { - if (![url.pathExtension isEqualToString:@"png"]) { - NSLog(@"WARNING WebViewProxy respondWithImage called for unknown type \"%@\". Defaulting to image/png", url.absoluteString); + if (![extension isEqualToString:@"png"]) { + NSLog(@"WARNING WebViewProxy respondWithImage called for unknown type \"%@\". Defaulting to image/png", self.request.URL); } // Default to PNG mimeType = @"image/png"; data = UIImagePNGRepresentation(image); } + [self respondWithData:data mimeType:mimeType]; } - (void)respondWithJSON:(NSDictionary *)jsonObject { @@ -82,6 +83,18 @@ - (void)respondWithError:(NSInteger)statusCode text:(NSString *)text { [self respondWithData:data mimeType:@"text/plain" statusCode:statusCode]; } - (void)respondWithData:(NSData *)data mimeType:(NSString *)mimeType statusCode:(NSInteger)statusCode { + if (!mimeType) { + NSString* extension = _protocol.request.URL.pathExtension; + if ([extension isEqualToString:@"png"]) { + mimeType = @"image/png"; + } else if ([extension isEqualToString:@"jpg"] || [extension isEqualToString:@"jpeg"]) { + mimeType = @"image/jpg"; + } else if ([extension isEqualToString:@"woff"]) { + mimeType = @"font/woff"; + } else if ([extension isEqualToString:@"ttf"]) { + mimeType = @"font/opentype"; + } + } if (![_headers objectForKey:@"Content-Type"]) { [_headers setValue:mimeType forKey:@"Content-Type"]; }