Fixed syntax

This commit is contained in:
Pierre-Olivier Latour
2012-12-30 18:48:25 -08:00
parent fca52ab2ab
commit 679f62a55d
9 changed files with 153 additions and 153 deletions
+12 -12
View File
@@ -42,26 +42,26 @@ typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* r
}
@property(nonatomic, readonly, getter=isRunning) BOOL running;
@property(nonatomic, readonly) NSUInteger port;
- (void) addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
- (void) removeAllHandlers;
- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
- (void)removeAllHandlers;
- (BOOL) start; // Default is main runloop, 8080 port and computer name
- (BOOL) startWithRunloop:(NSRunLoop*)runloop port:(NSUInteger)port bonjourName:(NSString*)name; // Pass nil name to disable Bonjour or empty string to use computer name
- (void) stop;
- (BOOL)start; // Default is main runloop, 8080 port and computer name
- (BOOL)startWithRunloop:(NSRunLoop*)runloop port:(NSUInteger)port bonjourName:(NSString*)name; // Pass nil name to disable Bonjour or empty string to use computer name
- (void)stop;
@end
@interface GCDWebServer (Subclassing)
+ (Class) connectionClass;
+ (NSString*) serverName; // Default is class name
+ (Class)connectionClass;
+ (NSString*)serverName; // Default is class name
@end
@interface GCDWebServer (Extensions)
- (BOOL) runWithPort:(NSUInteger)port; // Starts then automatically stops on SIGINT i.e. Ctrl-C (use on main thread only)
- (BOOL)runWithPort:(NSUInteger)port; // Starts then automatically stops on SIGINT i.e. Ctrl-C (use on main thread only)
@end
@interface GCDWebServer (Handlers)
- (void) addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block;
- (void) addHandlerForBasePath:(NSString*)basePath localPath:(NSString*)localPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge; // Base path is recursive and case-sensitive
- (void) addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block; // Path is case-insensitive
- (void) addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block; // Regular expression is case-insensitive
- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block;
- (void)addHandlerForBasePath:(NSString*)basePath localPath:(NSString*)localPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge; // Base path is recursive and case-sensitive
- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block; // Path is case-insensitive
- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block; // Regular expression is case-insensitive
@end
+20 -20
View File
@@ -101,7 +101,7 @@ static void _SignalHandler(int signal) {
@synthesize matchBlock=_matchBlock, processBlock=_processBlock;
- (id) initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock {
- (id)initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock {
if ((self = [super init])) {
_matchBlock = Block_copy(matchBlock);
_processBlock = Block_copy(processBlock);
@@ -109,7 +109,7 @@ static void _SignalHandler(int signal) {
return self;
}
- (void) dealloc {
- (void)dealloc {
Block_release(_matchBlock);
Block_release(_processBlock);
@@ -122,18 +122,18 @@ static void _SignalHandler(int signal) {
@synthesize handlers=_handlers, port=_port;
+ (void) initialize {
+ (void)initialize {
[GCDWebServerConnection class]; // Initialize class immediately to make sure it happens on the main thread
}
- (id) init {
- (id)init {
if ((self = [super init])) {
_handlers = [[NSMutableArray alloc] init];
}
return self;
}
- (void) dealloc {
- (void)dealloc {
if (_runLoop) {
[self stop];
}
@@ -143,19 +143,19 @@ static void _SignalHandler(int signal) {
[super dealloc];
}
- (void) addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)handlerBlock {
- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)handlerBlock {
DCHECK(_runLoop == nil);
GCDWebServerHandler* handler = [[GCDWebServerHandler alloc] initWithMatchBlock:matchBlock processBlock:handlerBlock];
[_handlers insertObject:handler atIndex:0];
[handler release];
}
- (void) removeAllHandlers {
- (void)removeAllHandlers {
DCHECK(_runLoop == nil);
[_handlers removeAllObjects];
}
- (BOOL) start {
- (BOOL)start {
return [self startWithRunloop:[NSRunLoop mainRunLoop] port:8080 bonjourName:@""];
}
@@ -184,7 +184,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
}
}
- (BOOL) startWithRunloop:(NSRunLoop*)runloop port:(NSUInteger)port bonjourName:(NSString*)name {
- (BOOL)startWithRunloop:(NSRunLoop*)runloop port:(NSUInteger)port bonjourName:(NSString*)name {
DCHECK(runloop);
DCHECK(port);
DCHECK(_runLoop == nil);
@@ -232,11 +232,11 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
return (_runLoop != nil ? YES : NO);
}
- (BOOL) isRunning {
- (BOOL)isRunning {
return (_runLoop != nil ? YES : NO);
}
- (void) stop {
- (void)stop {
DCHECK(_runLoop != nil);
if (_socket) {
if (_service) {
@@ -259,11 +259,11 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
@implementation GCDWebServer (Subclassing)
+ (Class) connectionClass {
+ (Class)connectionClass {
return [GCDWebServerConnection class];
}
+ (NSString*) serverName {
+ (NSString*)serverName {
return NSStringFromClass(self);
}
@@ -271,7 +271,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
@implementation GCDWebServer (Extensions)
- (BOOL) runWithPort:(NSUInteger)port {
- (BOOL)runWithPort:(NSUInteger)port {
BOOL success = NO;
_run = YES;
void* handler = signal(SIGINT, _SignalHandler);
@@ -292,7 +292,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
@implementation GCDWebServer (Handlers)
- (void) addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
[self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
return [[[class alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery] autorelease];
@@ -300,11 +300,11 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
} processBlock:block];
}
- (GCDWebServerResponse*) _responseWithContentsOfFile:(NSString*)path {
- (GCDWebServerResponse*)_responseWithContentsOfFile:(NSString*)path {
return [GCDWebServerFileResponse responseWithFile:path];
}
- (GCDWebServerResponse*) _responseWithContentsOfDirectory:(NSString*)path {
- (GCDWebServerResponse*)_responseWithContentsOfDirectory:(NSString*)path {
NSDirectoryEnumerator* enumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
if (enumerator == nil) {
return nil;
@@ -330,7 +330,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
return [GCDWebServerDataResponse responseWithHTML:html];
}
- (void) addHandlerForBasePath:(NSString*)basePath localPath:(NSString*)localPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge {
- (void)addHandlerForBasePath:(NSString*)basePath localPath:(NSString*)localPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge {
if ([basePath hasPrefix:@"/"] && [basePath hasSuffix:@"/"]) {
[self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
@@ -373,7 +373,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
}
}
- (void) addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
if ([path hasPrefix:@"/"] && [class isSubclassOfClass:[GCDWebServerRequest class]]) {
[self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
@@ -391,7 +391,7 @@ static void _SocketCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDat
}
}
- (void) addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)class processBlock:(GCDWebServerProcessBlock)block {
NSRegularExpression* expression = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:NULL];
if (expression && [class isSubclassOfClass:[GCDWebServerRequest class]]) {
[self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
+3 -3
View File
@@ -50,7 +50,7 @@
@end
@interface GCDWebServerConnection (Subclassing)
- (void) open;
- (GCDWebServerResponse*) processRequest:(GCDWebServerRequest*)request withBlock:(GCDWebServerProcessBlock)block;
- (void) close;
- (void)open;
- (GCDWebServerResponse*)processRequest:(GCDWebServerRequest*)request withBlock:(GCDWebServerProcessBlock)block;
- (void)close;
@end
+19 -19
View File
@@ -48,7 +48,7 @@ static dispatch_queue_t _formatterQueue = NULL;
@implementation GCDWebServerConnection (Read)
- (void) _readBufferWithLength:(NSUInteger)length completionBlock:(ReadBufferCompletionBlock)block {
- (void)_readBufferWithLength:(NSUInteger)length completionBlock:(ReadBufferCompletionBlock)block {
dispatch_read(_socket, length, kReadWriteQueue, ^(dispatch_data_t buffer, int error) {
@autoreleasepool {
@@ -75,7 +75,7 @@ static dispatch_queue_t _formatterQueue = NULL;
});
}
- (void) _readDataWithCompletionBlock:(ReadDataCompletionBlock)block {
- (void)_readDataWithCompletionBlock:(ReadDataCompletionBlock)block {
[self _readBufferWithLength:SIZE_T_MAX completionBlock:^(dispatch_data_t buffer) {
if (buffer) {
@@ -93,7 +93,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}];
}
- (void) _readHeadersWithCompletionBlock:(ReadHeadersCompletionBlock)block {
- (void)_readHeadersWithCompletionBlock:(ReadHeadersCompletionBlock)block {
DCHECK(_requestMessage);
NSMutableData* data = [NSMutableData dataWithCapacity:kHeadersReadBuffer];
[self _readBufferWithLength:SIZE_T_MAX completionBlock:^(dispatch_data_t buffer) {
@@ -127,7 +127,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}];
}
- (void) _readBodyWithRemainingLength:(NSUInteger)length completionBlock:(ReadBodyCompletionBlock)block {
- (void)_readBodyWithRemainingLength:(NSUInteger)length completionBlock:(ReadBodyCompletionBlock)block {
DCHECK([_request hasBody]);
[self _readBufferWithLength:length completionBlock:^(dispatch_data_t buffer) {
@@ -166,7 +166,7 @@ static dispatch_queue_t _formatterQueue = NULL;
@implementation GCDWebServerConnection (Write)
- (void) _writeBuffer:(dispatch_data_t)buffer withCompletionBlock:(WriteBufferCompletionBlock)block {
- (void)_writeBuffer:(dispatch_data_t)buffer withCompletionBlock:(WriteBufferCompletionBlock)block {
size_t size = dispatch_data_get_size(buffer);
dispatch_write(_socket, buffer, kReadWriteQueue, ^(dispatch_data_t data, int error) {
@@ -185,7 +185,7 @@ static dispatch_queue_t _formatterQueue = NULL;
});
}
- (void) _writeData:(NSData*)data withCompletionBlock:(WriteDataCompletionBlock)block {
- (void)_writeData:(NSData*)data withCompletionBlock:(WriteDataCompletionBlock)block {
[data retain];
dispatch_data_t buffer = dispatch_data_create(data.bytes, data.length, dispatch_get_current_queue(), ^{
[data release];
@@ -194,14 +194,14 @@ static dispatch_queue_t _formatterQueue = NULL;
dispatch_release(buffer);
}
- (void) _writeHeadersWithCompletionBlock:(WriteHeadersCompletionBlock)block {
- (void)_writeHeadersWithCompletionBlock:(WriteHeadersCompletionBlock)block {
DCHECK(_responseMessage);
CFDataRef message = CFHTTPMessageCopySerializedMessage(_responseMessage);
[self _writeData:(NSData*)message withCompletionBlock:block];
CFRelease(message);
}
- (void) _writeBodyWithCompletionBlock:(WriteBodyCompletionBlock)block {
- (void)_writeBodyWithCompletionBlock:(WriteBodyCompletionBlock)block {
DCHECK([_response hasBody]);
void* buffer = malloc(kBodyWriteBufferSize);
NSInteger result = [_response read:buffer maxLength:kBodyWriteBufferSize];
@@ -233,7 +233,7 @@ static dispatch_queue_t _formatterQueue = NULL;
@synthesize server=_server, address=_address, totalBytesRead=_bytesRead, totalBytesWritten=_bytesWritten;
+ (void) initialize {
+ (void)initialize {
DCHECK([NSThread isMainThread]); // NSDateFormatter should be initialized on main thread
if (_separatorData == nil) {
_separatorData = [[NSData alloc] initWithBytes:"\r\n\r\n" length:4];
@@ -258,7 +258,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}
}
- (void) _initializeResponseHeadersWithStatusCode:(NSInteger)statusCode {
- (void)_initializeResponseHeadersWithStatusCode:(NSInteger)statusCode {
_responseMessage = CFHTTPMessageCreateResponse(kCFAllocatorDefault, statusCode, NULL, kCFHTTPVersion1_1);
CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Connection"), CFSTR("Close"));
CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Server"), (CFStringRef)[[_server class] serverName]);
@@ -268,7 +268,7 @@ static dispatch_queue_t _formatterQueue = NULL;
});
}
- (void) _abortWithStatusCode:(NSUInteger)statusCode {
- (void)_abortWithStatusCode:(NSUInteger)statusCode {
DCHECK(_responseMessage == NULL);
DCHECK((statusCode >= 400) && (statusCode < 600));
[self _initializeResponseHeadersWithStatusCode:statusCode];
@@ -279,7 +279,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
- (void) _processRequest {
- (void)_processRequest {
DCHECK(_responseMessage == NULL);
GCDWebServerResponse* response = [self processRequest:_request withBlock:_handler.processBlock];
@@ -323,7 +323,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}
- (void) _readRequestBody:(NSData*)initialData {
- (void)_readRequestBody:(NSData*)initialData {
if ([_request open]) {
NSInteger length = _request.contentLength;
if (initialData.length) {
@@ -364,7 +364,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}
}
- (void) _readRequestHeaders {
- (void)_readRequestHeaders {
_requestMessage = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, true);
[self _readHeadersWithCompletionBlock:^(NSData* extraData) {
@@ -426,7 +426,7 @@ static dispatch_queue_t _formatterQueue = NULL;
}];
}
- (id) initWithServer:(GCDWebServer*)server address:(NSData*)address socket:(CFSocketNativeHandle)socket {
- (id)initWithServer:(GCDWebServer*)server address:(NSData*)address socket:(CFSocketNativeHandle)socket {
if ((self = [super init])) {
_server = [server retain];
_address = [address retain];
@@ -437,7 +437,7 @@ static dispatch_queue_t _formatterQueue = NULL;
return self;
}
- (void) dealloc {
- (void)dealloc {
[self close];
[_server release];
@@ -460,12 +460,12 @@ static dispatch_queue_t _formatterQueue = NULL;
@implementation GCDWebServerConnection (Subclassing)
- (void) open {
- (void)open {
LOG_DEBUG(@"Did open connection on socket %i", _socket);
[self _readRequestHeaders];
}
- (GCDWebServerResponse*) processRequest:(GCDWebServerRequest*)request withBlock:(GCDWebServerProcessBlock)block {
- (GCDWebServerResponse*)processRequest:(GCDWebServerRequest*)request withBlock:(GCDWebServerProcessBlock)block {
LOG_DEBUG(@"Connection on socket %i processing %@ request for \"%@\" (%i bytes body)", _socket, _request.method, _request.path, _request.contentLength);
GCDWebServerResponse* response = nil;
@try {
@@ -477,7 +477,7 @@ static dispatch_queue_t _formatterQueue = NULL;
return response;
}
- (void) close {
- (void)close {
close(_socket);
LOG_DEBUG(@"Did close connection on socket %i", _socket);
}
+2 -2
View File
@@ -93,7 +93,7 @@ NSDictionary* GCDWebServerParseURLEncodedForm(NSString* form);
#endif
@interface GCDWebServerConnection ()
- (id) initWithServer:(GCDWebServer*)server address:(NSData*)address socket:(CFSocketNativeHandle)socket;
- (id)initWithServer:(GCDWebServer*)server address:(NSData*)address socket:(CFSocketNativeHandle)socket;
@end
@interface GCDWebServer ()
@@ -107,5 +107,5 @@ NSDictionary* GCDWebServerParseURLEncodedForm(NSString* form);
}
@property(nonatomic, readonly) GCDWebServerMatchBlock matchBlock;
@property(nonatomic, readonly) GCDWebServerProcessBlock processBlock;
- (id) initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
- (id)initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
@end
+7 -7
View File
@@ -44,14 +44,14 @@
@property(nonatomic, readonly) NSDictionary* query; // May be nil
@property(nonatomic, readonly) NSString* contentType; // Automatically parsed from headers (nil if request has no body)
@property(nonatomic, readonly) NSUInteger contentLength; // Automatically parsed from headers
- (id) initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query;
- (BOOL) hasBody; // Convenience method
- (id)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query;
- (BOOL)hasBody; // Convenience method
@end
@interface GCDWebServerRequest (Subclassing)
- (BOOL) open; // Implementation required
- (NSInteger) write:(const void*)buffer maxLength:(NSUInteger)length; // Implementation required
- (BOOL) close; // Implementation required
- (BOOL)open; // Implementation required
- (NSInteger)write:(const void*)buffer maxLength:(NSUInteger)length; // Implementation required
- (BOOL)close; // Implementation required
@end
@interface GCDWebServerDataRequest : GCDWebServerRequest {
@@ -74,7 +74,7 @@
NSDictionary* _arguments;
}
@property(nonatomic, readonly) NSDictionary* arguments; // Only valid after open / write / close sequence
+ (NSString*) mimeType;
+ (NSString*)mimeType;
@end
@interface GCDWebServerMultiPart : NSObject {
@@ -121,5 +121,5 @@
}
@property(nonatomic, readonly) NSDictionary* arguments; // Only valid after open / write / close sequence
@property(nonatomic, readonly) NSDictionary* files; // Only valid after open / write / close sequence
+ (NSString*) mimeType;
+ (NSString*)mimeType;
@end
+34 -34
View File
@@ -72,7 +72,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize method=_method, URL=_url, headers=_headers, path=_path, query=_query, contentType=_type, contentLength=_length;
- (id) initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
- (id)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
if ((self = [super init])) {
_method = [method copy];
_url = [url retain];
@@ -96,7 +96,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return self;
}
- (void) dealloc {
- (void)dealloc {
[_method release];
[_url release];
[_headers release];
@@ -107,7 +107,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
[super dealloc];
}
- (BOOL) hasBody {
- (BOOL)hasBody {
return _type ? YES : NO;
}
@@ -115,17 +115,17 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@implementation GCDWebServerRequest (Subclassing)
- (BOOL) open {
- (BOOL)open {
[self doesNotRecognizeSelector:_cmd];
return NO;
}
- (NSInteger) write:(const void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)write:(const void*)buffer maxLength:(NSUInteger)length {
[self doesNotRecognizeSelector:_cmd];
return -1;
}
- (BOOL) close {
- (BOOL)close {
[self doesNotRecognizeSelector:_cmd];
return NO;
}
@@ -136,26 +136,26 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize data=_data;
- (void) dealloc {
- (void)dealloc {
DCHECK(_data != nil);
[_data release];
[super dealloc];
}
- (BOOL) open {
- (BOOL)open {
DCHECK(_data == nil);
_data = [[NSMutableData alloc] initWithCapacity:self.contentLength];
return _data ? YES : NO;
}
- (NSInteger) write:(const void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)write:(const void*)buffer maxLength:(NSUInteger)length {
DCHECK(_data != nil);
[_data appendBytes:buffer length:length];
return length;
}
- (BOOL) close {
- (BOOL)close {
DCHECK(_data != nil);
return YES;
}
@@ -166,14 +166,14 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize filePath=_filePath;
- (id) initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
- (id)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
if ((self = [super initWithMethod:method url:url headers:headers path:path query:query])) {
_filePath = [[NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]] retain];
}
return self;
}
- (void) dealloc {
- (void)dealloc {
DCHECK(_file < 0);
unlink([_filePath fileSystemRepresentation]);
[_filePath release];
@@ -181,18 +181,18 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
[super dealloc];
}
- (BOOL) open {
- (BOOL)open {
DCHECK(_file == 0);
_file = open([_filePath fileSystemRepresentation], O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
return (_file > 0 ? YES : NO);
}
- (NSInteger) write:(const void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)write:(const void*)buffer maxLength:(NSUInteger)length {
DCHECK(_file > 0);
return write(_file, buffer, length);
}
- (BOOL) close {
- (BOOL)close {
DCHECK(_file > 0);
int result = close(_file);
_file = -1;
@@ -205,17 +205,17 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize arguments=_arguments;
+ (NSString*) mimeType {
+ (NSString*)mimeType {
return @"application/x-www-form-urlencoded";
}
- (void) dealloc {
- (void)dealloc {
[_arguments release];
[super dealloc];
}
- (BOOL) close {
- (BOOL)close {
if (![super close]) {
return NO;
}
@@ -234,7 +234,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize contentType=_contentType, mimeType=_mimeType;
- (id) initWithContentType:(NSString*)contentType {
- (id)initWithContentType:(NSString*)contentType {
if ((self = [super init])) {
_contentType = [contentType copy];
NSArray* components = [_contentType componentsSeparatedByString:@";"];
@@ -248,7 +248,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return self;
}
- (void) dealloc {
- (void)dealloc {
[_contentType release];
[_mimeType release];
@@ -261,7 +261,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize data=_data, string=_string;
- (id) initWithContentType:(NSString*)contentType data:(NSData*)data {
- (id)initWithContentType:(NSString*)contentType data:(NSData*)data {
if ((self = [super initWithContentType:contentType])) {
_data = [data retain];
@@ -273,14 +273,14 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return self;
}
- (void) dealloc {
- (void)dealloc {
[_data release];
[_string release];
[super dealloc];
}
- (NSString*) description {
- (NSString*)description {
return [NSString stringWithFormat:@"<%@ | '%@' | %i bytes>", [self class], self.mimeType, (int)_data.length];
}
@@ -290,7 +290,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize fileName=_fileName, temporaryPath=_temporaryPath;
- (id) initWithContentType:(NSString*)contentType fileName:(NSString*)fileName temporaryPath:(NSString*)temporaryPath {
- (id)initWithContentType:(NSString*)contentType fileName:(NSString*)fileName temporaryPath:(NSString*)temporaryPath {
if ((self = [super initWithContentType:contentType])) {
_fileName = [fileName copy];
_temporaryPath = [temporaryPath copy];
@@ -298,7 +298,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return self;
}
- (void) dealloc {
- (void)dealloc {
unlink([_temporaryPath fileSystemRepresentation]);
[_fileName release];
@@ -307,7 +307,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
[super dealloc];
}
- (NSString*) description {
- (NSString*)description {
return [NSString stringWithFormat:@"<%@ | '%@' | '%@>'", [self class], self.mimeType, _fileName];
}
@@ -317,7 +317,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
@synthesize arguments=_arguments, files=_files;
+ (void) initialize {
+ (void)initialize {
if (_newlineData == nil) {
_newlineData = [[NSData alloc] initWithBytes:"\r\n" length:2];
DCHECK(_newlineData);
@@ -332,11 +332,11 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
}
}
+ (NSString*) mimeType {
+ (NSString*)mimeType {
return @"multipart/form-data";
}
- (id) initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
- (id)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
if ((self = [super initWithMethod:method url:url headers:headers path:path query:query])) {
NSString* boundary = _ExtractHeaderParameter(self.contentType, @"boundary");
if (boundary) {
@@ -354,7 +354,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return self;
}
- (BOOL) open {
- (BOOL)open {
DCHECK(_parserData == nil);
_parserData = [[NSMutableData alloc] initWithCapacity:kMultiPartBufferSize];
_parserState = kParserState_Start;
@@ -362,7 +362,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
}
// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4
- (BOOL) _parseData {
- (BOOL)_parseData {
BOOL success = YES;
if (_parserState == kParserState_Headers) {
@@ -479,13 +479,13 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return success;
}
- (NSInteger) write:(const void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)write:(const void*)buffer maxLength:(NSUInteger)length {
DCHECK(_parserData != nil);
[_parserData appendBytes:buffer length:length];
return ([self _parseData] ? length : -1);
}
- (BOOL) close {
- (BOOL)close {
DCHECK(_parserData != nil);
[_parserData release];
_parserData = nil;
@@ -500,7 +500,7 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) {
return (_parserState == kParserState_End ? YES : NO);
}
- (void) dealloc {
- (void)dealloc {
DCHECK(_parserData == nil);
[_arguments release];
[_files release];
+23 -23
View File
@@ -41,23 +41,23 @@
@property(nonatomic) NSUInteger cacheControlMaxAge; // Default is 0 seconds i.e. "no-cache"
@property(nonatomic, readonly) NSDictionary* additionalHeaders;
+ (GCDWebServerResponse*) response;
- (id) init;
- (id) initWithContentType:(NSString*)type contentLength:(NSUInteger)length; // Pass nil contentType to indicate empty body
- (void) setValue:(NSString*)value forAdditionalHeader:(NSString*)header;
- (BOOL) hasBody; // Convenience method
- (id)init;
- (id)initWithContentType:(NSString*)type contentLength:(NSUInteger)length; // Pass nil contentType to indicate empty body
- (void)setValue:(NSString*)value forAdditionalHeader:(NSString*)header;
- (BOOL)hasBody; // Convenience method
@end
@interface GCDWebServerResponse (Subclassing)
- (BOOL) open; // Implementation required
- (NSInteger) read:(void*)buffer maxLength:(NSUInteger)length; // Implementation required
- (BOOL) close; // Implementation required
- (BOOL)open; // Implementation required
- (NSInteger)read:(void*)buffer maxLength:(NSUInteger)length; // Implementation required
- (BOOL)close; // Implementation required
@end
@interface GCDWebServerResponse (Extensions)
+ (GCDWebServerResponse*) responseWithStatusCode:(NSInteger)statusCode;
+ (GCDWebServerResponse*) responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
- (id) initWithStatusCode:(NSInteger)statusCode;
- (id) initWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
+ (GCDWebServerResponse*)responseWithStatusCode:(NSInteger)statusCode;
+ (GCDWebServerResponse*)responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
- (id)initWithStatusCode:(NSInteger)statusCode;
- (id)initWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
@end
@interface GCDWebServerDataResponse : GCDWebServerResponse {
@@ -65,17 +65,17 @@
NSData* _data;
NSInteger _offset;
}
+ (GCDWebServerDataResponse*) responseWithData:(NSData*)data contentType:(NSString*)type;
- (id) initWithData:(NSData*)data contentType:(NSString*)type;
+ (GCDWebServerDataResponse*)responseWithData:(NSData*)data contentType:(NSString*)type;
- (id)initWithData:(NSData*)data contentType:(NSString*)type;
@end
@interface GCDWebServerDataResponse (Extensions)
+ (GCDWebServerDataResponse*) responseWithText:(NSString*)text;
+ (GCDWebServerDataResponse*) responseWithHTML:(NSString*)html;
+ (GCDWebServerDataResponse*) responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables;
- (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)
+ (GCDWebServerDataResponse*)responseWithText:(NSString*)text;
+ (GCDWebServerDataResponse*)responseWithHTML:(NSString*)html;
+ (GCDWebServerDataResponse*)responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables;
- (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)
@end
@interface GCDWebServerFileResponse : GCDWebServerResponse {
@@ -83,8 +83,8 @@
NSString* _path;
int _file;
}
+ (GCDWebServerFileResponse*) responseWithFile:(NSString*)path;
+ (GCDWebServerFileResponse*) responseWithFile:(NSString*)path isAttachment:(BOOL)attachment;
- (id) initWithFile:(NSString*)path;
- (id) initWithFile:(NSString*)path isAttachment:(BOOL)attachment;
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path;
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment;
- (id)initWithFile:(NSString*)path;
- (id)initWithFile:(NSString*)path isAttachment:(BOOL)attachment;
@end
+33 -33
View File
@@ -33,15 +33,15 @@
@synthesize contentType=_type, contentLength=_length, statusCode=_status, cacheControlMaxAge=_maxAge, additionalHeaders=_headers;
+ (GCDWebServerResponse*) response {
+(GCDWebServerResponse*) response {
return [[[[self class] alloc] init] autorelease];
}
- (id) init {
- (id)init {
return [self initWithContentType:nil contentLength:0];
}
- (id) initWithContentType:(NSString*)type contentLength:(NSUInteger)length {
- (id)initWithContentType:(NSString*)type contentLength:(NSUInteger)length {
if ((self = [super init])) {
_type = [type copy];
_length = length;
@@ -56,18 +56,18 @@
return self;
}
- (void) dealloc {
- (void)dealloc {
[_type release];
[_headers release];
[super dealloc];
}
- (void) setValue:(NSString*)value forAdditionalHeader:(NSString*)header {
- (void)setValue:(NSString*)value forAdditionalHeader:(NSString*)header {
[_headers setValue:value forKey:header];
}
- (BOOL) hasBody {
- (BOOL)hasBody {
return _type ? YES : NO;
}
@@ -75,17 +75,17 @@
@implementation GCDWebServerResponse (Subclassing)
- (BOOL) open {
- (BOOL)open {
[self doesNotRecognizeSelector:_cmd];
return NO;
}
- (NSInteger) read:(void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)read:(void*)buffer maxLength:(NSUInteger)length {
[self doesNotRecognizeSelector:_cmd];
return -1;
}
- (BOOL) close {
- (BOOL)close {
[self doesNotRecognizeSelector:_cmd];
return NO;
}
@@ -94,22 +94,22 @@
@implementation GCDWebServerResponse (Extensions)
+ (GCDWebServerResponse*) responseWithStatusCode:(NSInteger)statusCode {
+ (GCDWebServerResponse*)responseWithStatusCode:(NSInteger)statusCode {
return [[[self alloc] initWithStatusCode:statusCode] autorelease];
}
+ (GCDWebServerResponse*) responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
+ (GCDWebServerResponse*)responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
return [[[self alloc] initWithRedirect:location permanent:permanent] autorelease];
}
- (id) initWithStatusCode:(NSInteger)statusCode {
- (id)initWithStatusCode:(NSInteger)statusCode {
if ((self = [self initWithContentType:nil contentLength:0])) {
self.statusCode = statusCode;
}
return self;
}
- (id) initWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
- (id)initWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
if ((self = [self initWithContentType:nil contentLength:0])) {
self.statusCode = permanent ? 301 : 307;
[self setValue:[location absoluteString] forAdditionalHeader:@"Location"];
@@ -121,11 +121,11 @@
@implementation GCDWebServerDataResponse
+ (GCDWebServerDataResponse*) responseWithData:(NSData*)data contentType:(NSString*)type {
+ (GCDWebServerDataResponse*)responseWithData:(NSData*)data contentType:(NSString*)type {
return [[[[self class] alloc] initWithData:data contentType:type] autorelease];
}
- (id) initWithData:(NSData*)data contentType:(NSString*)type {
- (id)initWithData:(NSData*)data contentType:(NSString*)type {
if (data == nil) {
DNOT_REACHED();
[self release];
@@ -139,20 +139,20 @@
return self;
}
- (void) dealloc {
- (void)dealloc {
DCHECK(_offset < 0);
[_data release];
[super dealloc];
}
- (BOOL) open {
- (BOOL)open {
DCHECK(_offset < 0);
_offset = 0;
return YES;
}
- (NSInteger) read:(void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)read:(void*)buffer maxLength:(NSUInteger)length {
DCHECK(_offset >= 0);
NSInteger size = 0;
if (_offset < _data.length) {
@@ -163,7 +163,7 @@
return size;
}
- (BOOL) close {
- (BOOL)close {
DCHECK(_offset >= 0);
_offset = -1;
return YES;
@@ -173,19 +173,19 @@
@implementation GCDWebServerDataResponse (Extensions)
+ (GCDWebServerDataResponse*) responseWithText:(NSString*)text {
+ (GCDWebServerDataResponse*)responseWithText:(NSString*)text {
return [[[self alloc] initWithText:text] autorelease];
}
+ (GCDWebServerDataResponse*) responseWithHTML:(NSString*)html {
+ (GCDWebServerDataResponse*)responseWithHTML:(NSString*)html {
return [[[self alloc] initWithHTML:html] autorelease];
}
+ (GCDWebServerDataResponse*) responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
+ (GCDWebServerDataResponse*)responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
return [[[self alloc] initWithHTMLTemplate:path variables:variables] autorelease];
}
- (id) initWithText:(NSString*)text {
- (id)initWithText:(NSString*)text {
NSData* data = [text dataUsingEncoding:NSUTF8StringEncoding];
if (data == nil) {
DNOT_REACHED();
@@ -195,7 +195,7 @@
return [self initWithData:data contentType:@"text/plain; charset=utf-8"];
}
- (id) initWithHTML:(NSString*)html {
- (id)initWithHTML:(NSString*)html {
NSData* data = [html dataUsingEncoding:NSUTF8StringEncoding];
if (data == nil) {
DNOT_REACHED();
@@ -205,7 +205,7 @@
return [self initWithData:data contentType:@"text/html; charset=utf-8"];
}
- (id) initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
- (id)initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
NSMutableString* html = [[NSMutableString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
[variables enumerateKeysAndObjectsUsingBlock:^(NSString* key, NSString* value, BOOL* stop) {
[html replaceOccurrencesOfString:[NSString stringWithFormat:@"%%%@%%", key] withString:value options:0 range:NSMakeRange(0, html.length)];
@@ -219,19 +219,19 @@
@implementation GCDWebServerFileResponse
+ (GCDWebServerFileResponse*) responseWithFile:(NSString*)path {
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path {
return [[[[self class] alloc] initWithFile:path] autorelease];
}
+ (GCDWebServerFileResponse*) responseWithFile:(NSString*)path isAttachment:(BOOL)attachment {
+ (GCDWebServerFileResponse*)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment {
return [[[[self class] alloc] initWithFile:path isAttachment:attachment] autorelease];
}
- (id) initWithFile:(NSString*)path {
- (id)initWithFile:(NSString*)path {
return [self initWithFile:path isAttachment:NO];
}
- (id) initWithFile:(NSString*)path isAttachment:(BOOL)attachment {
- (id)initWithFile:(NSString*)path isAttachment:(BOOL)attachment {
struct stat info;
if (lstat([path fileSystemRepresentation], &info) || !(info.st_mode & S_IFREG)) {
DNOT_REACHED();
@@ -259,25 +259,25 @@
return self;
}
- (void) dealloc {
- (void)dealloc {
DCHECK(_file <= 0);
[_path release];
[super dealloc];
}
- (BOOL) open {
- (BOOL)open {
DCHECK(_file <= 0);
_file = open([_path fileSystemRepresentation], O_NOFOLLOW | O_RDONLY);
return (_file > 0 ? YES : NO);
}
- (NSInteger) read:(void*)buffer maxLength:(NSUInteger)length {
- (NSInteger)read:(void*)buffer maxLength:(NSUInteger)length {
DCHECK(_file > 0);
return read(_file, buffer, length);
}
- (BOOL) close {
- (BOOL)close {
DCHECK(_file > 0);
int result = close(_file);
_file = 0;