From 4c4c24136d3f9946772e60e0a3d9f6be85fee513 Mon Sep 17 00:00:00 2001 From: Boris Schneiderman Date: Tue, 22 Apr 2014 14:46:29 -0700 Subject: [PATCH 1/2] implemented svg type passing in CocoaHTTPServer --- .../Core/Responses/HTTPDataResponse.h | 4 +++- .../Core/Responses/HTTPDataResponse.m | 20 +++++++++++++++- .../Core/Responses/HTTPFileResponse.m | 9 +++++++ LauncherOSX/PackageResourceServer.mm | 24 ++++++++++++++++++- LauncherOSX/RDPackageResource.h | 1 + 5 files changed, 55 insertions(+), 3 deletions(-) diff --git a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.h b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.h index 66c5e40..2eb4656 100755 --- a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.h +++ b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.h @@ -6,8 +6,10 @@ { NSUInteger offset; NSData *data; + NSString *contentType; } -- (id)initWithData:(NSData *)data; +- (id)initWithData:(NSData *)dataParam; +- (id)initWithData:(NSData *)dataParam contentType:(NSString *)contentTypeParam; @end diff --git a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.m b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.m index 6525e37..a4f0aac 100755 --- a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.m +++ b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPDataResponse.m @@ -12,16 +12,34 @@ @implementation HTTPDataResponse +- (NSDictionary *)httpHeaders { + + if(contentType) { + return [NSDictionary dictionaryWithObject:contentType forKey:@"Content-Type"]; + } + + return [NSDictionary new]; +} + + - (id)initWithData:(NSData *)dataParam { - if((self = [super init])) + return [self initWithData:dataParam contentType:nil]; +} + +- (id)initWithData:(NSData *)dataParam contentType:(NSString *)contentTypeParam +{ + if((self = [super init])) { HTTPLogTrace(); offset = 0; data = dataParam; + contentType = contentTypeParam; } + return self; + } - (void)dealloc diff --git a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m index cf73cd2..7c14be1 100755 --- a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m +++ b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m @@ -18,6 +18,15 @@ @implementation HTTPFileResponse +- (NSDictionary *)httpHeaders { + //HTTPLogTrace(); + if ([[filePath pathExtension] isEqualToString:@"svg"]) { + return [NSDictionary dictionaryWithObject:@"image/svg+xml" forKey:@"Content-Type"]; + } + return [NSDictionary new]; +} + + - (id)initWithFilePath:(NSString *)fpath forConnection:(HTTPConnection *)parent { if((self = [super init])) diff --git a/LauncherOSX/PackageResourceServer.mm b/LauncherOSX/PackageResourceServer.mm index 29ab378..e816ac0 100644 --- a/LauncherOSX/PackageResourceServer.mm +++ b/LauncherOSX/PackageResourceServer.mm @@ -50,6 +50,14 @@ @implementation PackageResourceConnection @synchronized ([PackageResourceServer resourceLock]) { RDPackageResource *resource = [m_package resourceAtRelativePath:path]; + NSString* ext = [[path pathExtension] lowercaseString]; + NSString* contentType = nil; + + if([ext isEqualToString:@"svg"]) { + contentType = @"image/svg+xml"; + } + + if (resource == nil) { NSLog(@"No resource found! (%@)", path); } @@ -61,7 +69,7 @@ @implementation PackageResourceConnection NSData *data = resource.data; if (data != nil) { - return [[HTTPDataResponse alloc] initWithData:data]; + return [[HTTPDataResponse alloc] initWithData:data contentType:contentType]; } } else { @@ -82,6 +90,20 @@ + (void)setPackage:(LOXPackage *)package { @implementation PackageResourceResponse +- (NSDictionary *)httpHeaders { + + if(m_resource.relativePath) { + + NSString* ext = [[m_resource.relativePath pathExtension] lowercaseString]; + + if([ext isEqualToString:@"svg"]) { + return [NSDictionary dictionaryWithObject:@"image/svg+xml" forKey:@"Content-Type"]; + } + + } + + return [NSDictionary new]; +} - (UInt64)contentLength { return m_resource.bytesCount; diff --git a/LauncherOSX/RDPackageResource.h b/LauncherOSX/RDPackageResource.h index 22f3dae..b91508a 100644 --- a/LauncherOSX/RDPackageResource.h +++ b/LauncherOSX/RDPackageResource.h @@ -18,6 +18,7 @@ @interface RDPackageResource : NSObject { @private LOXPackage *m_package; @private NSData *m_data; + } //@property (nonatomic, readonly) ePub3::ByteStream* byteStream; From ab73e09c245cf6f2a69808d59551eaec93f2b096 Mon Sep 17 00:00:00 2001 From: Daniel Weck Date: Mon, 29 Sep 2014 17:33:16 +0100 Subject: [PATCH 2/2] lower case file extension (consistent with the other string comparisons) --- LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m | 2 +- readium-shared-js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m index 7c14be1..a3d7fd6 100755 --- a/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m +++ b/LauncherOSX/CocoaHTTPServer/Core/Responses/HTTPFileResponse.m @@ -20,7 +20,7 @@ @implementation HTTPFileResponse - (NSDictionary *)httpHeaders { //HTTPLogTrace(); - if ([[filePath pathExtension] isEqualToString:@"svg"]) { + if ([[[filePath pathExtension] lowercaseString] isEqualToString:@"svg"]) { return [NSDictionary dictionaryWithObject:@"image/svg+xml" forKey:@"Content-Type"]; } return [NSDictionary new]; diff --git a/readium-shared-js b/readium-shared-js index d4ec27c..a449c30 160000 --- a/readium-shared-js +++ b/readium-shared-js @@ -1 +1 @@ -Subproject commit d4ec27cc24be799d0cb42fa431384965a126f68d +Subproject commit a449c300abb857cd4147ece6cea4d8bde6899e22