Created
October 30, 2012 14:04
-
-
Save pita5/3980343 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (CFHTTPMessageRef)createHeadMessage | |
{ | |
NSURL* url = self.request.URL; | |
CFHTTPMessageRef request = CFHTTPMessageCreateRequest(NULL, (CFStringRef)@"HEAD", (__bridge CFURLRef)url, kCFHTTPVersion1_1); | |
return request; | |
} | |
- (NSDictionary *)responseHeaders:(CFHTTPMessageRef)request | |
{ | |
CFReadStreamRef requestStream = CFReadStreamCreateForHTTPRequest(NULL, request); | |
CFReadStreamOpen(requestStream); | |
NSMutableData* responseBytes = [NSMutableData data]; | |
CFIndex numBytesRead = 0; | |
do | |
{ | |
UInt8 buf[1024]; | |
numBytesRead = CFReadStreamRead(requestStream, buf, sizeof(buf)); | |
if(numBytesRead > 0) | |
[responseBytes appendBytes:buf length:numBytesRead]; | |
} | |
while(numBytesRead > 0); | |
CFHTTPMessageRef response = (CFHTTPMessageRef)CFReadStreamCopyProperty(requestStream, kCFStreamPropertyHTTPResponseHeader); | |
CFHTTPMessageSetBody(response, (__bridge CFDataRef)responseBytes); | |
CFReadStreamClose(requestStream); | |
CFRelease(requestStream); | |
NSDictionary* responseHeaders = CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(response)); | |
CFRelease(response); | |
return responseHeaders; | |
} | |
- (void)_doesLoacalCacheNeedUpdate | |
{ | |
if (!_cachedResponse) | |
{ | |
// If we don't have some cached data, we need an update! | |
[self _startLoadingConnection]; | |
} | |
else | |
{ | |
CFHTTPMessageRef request = [self createHeadMessage]; | |
NSDictionary* responseHeaders = [self responseHeaders:request]; | |
CFRelease(request); | |
[self _compareFreshHeaders:responseHeaders | |
withCacheHeaders:self.cachedResponse.response.allHeaderFields]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment