diff options
Diffstat (limited to 'Classes/Fetcher.m')
-rw-r--r-- | Classes/Fetcher.m | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Classes/Fetcher.m b/Classes/Fetcher.m new file mode 100644 index 0000000..3fe162f --- /dev/null +++ b/Classes/Fetcher.m @@ -0,0 +1,61 @@ +// +// Fetcher.m +// PicCast +// +// Created by Matthew Handler on 4/26/11. +// Copyright 2011 Earl Industries. All rights reserved. +// + +#import "Fetcher.h" +#import "PicCastAppDelegate.h" + +@implementation Fetcher + +@synthesize delegate; + ++ (Fetcher *) initWithString:(NSString *)string andDelegate:(id<FetcherDelegate>)d { + Fetcher *fetcher = [[[Fetcher alloc] init] autorelease]; + fetcher.delegate = d; + [fetcher setUrlAndConnect:string]; + return fetcher; +} + +- (Fetcher *) init { + receivedData = [[NSMutableData data] retain]; + return self; +} + +- (void) setUrlAndConnect:(NSString *)string { + + NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:string] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:30.0]; + if ([NSURLConnection connectionWithRequest:theRequest delegate:self]) { + [receivedData setLength:0]; + } else { + [PicCastAppDelegate prompt:@"Error" withMessage:@"No internet connection" andButtonTitle:@"shucks" withDelegate:self]; + } +} + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { + [receivedData setLength:0]; +} + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { + [receivedData appendData:data]; +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { + [delegate connection:connection failedWithError:error]; +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection { + [delegate connection:connection finishedWithData:receivedData]; +} + +- (void) dealloc { + [receivedData release]; + [super dealloc]; +} + +@end |