diff --git a/VOKMockUrlProtocol.h b/VOKMockUrlProtocol.h index ac387ba..403e8f6 100644 --- a/VOKMockUrlProtocol.h +++ b/VOKMockUrlProtocol.h @@ -12,4 +12,13 @@ */ @interface VOKMockUrlProtocol : NSURLProtocol +/** + * Mock data should go into a directory with the name defined in this string. + * It defaults to "VOKMockData", but its default can be overwritten by subclassing + * VOKMockUrlProtocol and overriding - initWithRequest:cachedResponse:client. + * + * If set to nil, this property will default to VOKMockData + */ +@property (copy, nonatomic) NSString *mockDataDirectory; + @end diff --git a/VOKMockUrlProtocol.m b/VOKMockUrlProtocol.m index 3cb7aa3..9d2cb74 100644 --- a/VOKMockUrlProtocol.m +++ b/VOKMockUrlProtocol.m @@ -23,7 +23,7 @@ #endif #endif -static NSString *const MockDataDirectory = @"VOKMockData"; +static NSString *const DefaultMockDataDirectory = @"VOKMockData"; static NSString *const AppendSeparatorFormat = @"|%@"; @@ -49,6 +49,15 @@ + (instancetype)containerWithResponse:(NSHTTPURLResponse *)response data:(NSData @implementation VOKMockUrlProtocol +- (NSString *)mockDataDirectory +{ + if (_mockDataDirectory == nil) { + return DefaultMockDataDirectory; + } + + return _mockDataDirectory; +} + + (BOOL)canInitWithRequest:(NSURLRequest *)request { return YES; @@ -314,7 +323,7 @@ - (VOKMockUrlProtocolResponseAndDataContainer *)responseAndData for (NSString *resourceName in resourceNames) { filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resourceName ofType:@"http" - inDirectory:MockDataDirectory]; + inDirectory:self.mockDataDirectory]; NSString *fileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL]; @@ -329,7 +338,7 @@ - (VOKMockUrlProtocolResponseAndDataContainer *)responseAndData for (NSString *resourceName in resourceNames) { filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resourceName ofType:@"json" - inDirectory:MockDataDirectory]; + inDirectory:self.mockDataDirectory]; NSData *data = [NSData dataWithContentsOfFile:filePath]; if (data) { // We've got a JSON data file, so send it.