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..a3d7fd6 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] lowercaseString] 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 b43c2e1..d59043f 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; 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