@@ -14,12 +14,10 @@ * file. */ #include "config.h" -#define OF_HTTP_CLIENT_M - #include #include #import "OFHTTPClient.h" #import "OFHTTPRequest.h" @@ -150,13 +148,15 @@ URL: URL]; sock = [[[of_tls_socket_class alloc] init] autorelease]; } - [delegate client: self - didCreateSocket: sock - request: request]; + if ([delegate respondsToSelector: + @selector(client:didCreateSocket:request:)]) + [delegate client: self + didCreateSocket: sock + request: request]; [sock connectToHost: [URL host] port: [URL port]]; /* @@ -296,20 +296,22 @@ [key isEqual: @"Location"]) && (insecureRedirectsAllowed || [scheme isEqual: @"http"] || ![value hasPrefix: @"http://"])) { OFURL *newURL; OFHTTPRequest *newRequest; - BOOL follow; + BOOL follow = YES; newURL = [OFURL URLWithString: value relativeToURL: URL]; - follow = [delegate client: self - shouldFollowRedirect: newURL - request: request]; + if ([delegate respondsToSelector: + @selector(client:shouldFollowRedirect:request:)]) + follow = [delegate client: self + shouldFollowRedirect: newURL + request: request]; - if (!follow && delegate != nil) { + if (!follow) { [serverHeaders setObject: value forKey: key]; continue; } @@ -336,14 +338,16 @@ [serverHeaders setObject: value forKey: key]; } - [delegate client: self - didReceiveHeaders: serverHeaders - statusCode: status - request: request]; + if ([delegate respondsToSelector: + @selector(client:didReceiveHeaders:statusCode:request:)]) + [delegate client: self + didReceiveHeaders: serverHeaders + statusCode: status + request: request]; data = (storesData ? [OFDataArray dataArray] : nil); chunked = [[serverHeaders objectForKey: @"Transfer-Encoding"] isEqual: @"chunked"]; @@ -396,14 +400,17 @@ ? toRead : of_pagesize); length = [sock readIntoBuffer: buffer length: length]; - [delegate client: self - didReceiveData: buffer - length: length - request: request]; + if ([delegate respondsToSelector: + @selector(client:didReceiveData: + length:request:)]) + [delegate client: self + didReceiveData: buffer + length: length + request: request]; objc_autoreleasePoolPop(pool2); pool2 = objc_autoreleasePoolPush(); bytesReceived += length; @@ -435,14 +442,17 @@ length = [sock readIntoBuffer: buffer length: of_pagesize]; pool2 = objc_autoreleasePoolPush(); - [delegate client: self - didReceiveData: buffer - length: length - request: request]; + if ([delegate respondsToSelector: + @selector(client:didReceiveData:length: + request:)]) + [delegate client: self + didReceiveData: buffer + length: length + request: request]; objc_autoreleasePoolPop(pool2); bytesReceived += length; [data addItems: buffer @@ -484,35 +494,6 @@ request: request result: result]; return result; } -@end - -@implementation OFObject (OFHTTPClientDelegate) -- (void)client: (OFHTTPClient*)client - didCreateSocket: (OFTCPSocket*)socket - request: (OFHTTPRequest*)request -{ -} - -- (void)client: (OFHTTPClient*)client - didReceiveHeaders: (OFDictionary*)headers - statusCode: (int)statusCode - request: (OFHTTPRequest*)request -{ -} - -- (void)client: (OFHTTPClient*)client - didReceiveData: (const char*)data - length: (size_t)length - request: (OFHTTPRequest*)request -{ -} - -- (BOOL)client: (OFHTTPClient*)client - shouldFollowRedirect: (OFURL*)URL - request: (OFHTTPRequest*)request -{ - return YES; -} @end