Skip to content

Commit

Permalink
More restructuring
Browse files Browse the repository at this point in the history
  • Loading branch information
stevestreza committed Jun 19, 2011
1 parent b38922e commit de85a40
Show file tree
Hide file tree
Showing 22 changed files with 169 additions and 441 deletions.
25 changes: 25 additions & 0 deletions Classes/MWURLOperation.h
Expand Up @@ -110,3 +110,28 @@
-(void)operationHadError:(NSError *)error;

@end

@interface NSData (Base64)

/*! @function +dataWithBase64EncodedString:
@discussion This method returns an autoreleased NSData object. The NSData object is initialized with the
contents of the Base 64 encoded string. This is a convenience method.
@param inBase64String An NSString object that contains only Base 64 encoded data.
@result The NSData object. */
+ (NSData *) dataWithBase64EncodedString:(NSString *) string;

/*! @function -initWithBase64EncodedString:
@discussion The NSData object is initialized with the contents of the Base 64 encoded string.
This method returns self as a convenience.
@param inBase64String An NSString object that contains only Base 64 encoded data.
@result This method returns self. */
- (id) initWithBase64EncodedString:(NSString *) string;

/*! @function -base64EncodingWithLineLength:
@discussion This method returns a Base 64 encoded string representation of the data object.
@param inLineLength A value of zero means no line breaks. This is crunched to a multiple of 4 (the next
one greater than inLineLength).
@result The base 64 encoded data. */
- (NSString *) base64EncodingWithLineLength:(unsigned int) lineLength;

@end
146 changes: 144 additions & 2 deletions Classes/MWURLOperation.m
Expand Up @@ -30,7 +30,6 @@
//

#import "MWURLOperation.h"
#import "NSData+Base64.h"

#if TARGET_OS_IPHONE
#define kMWURLOperationRunLoopMode NSDefaultRunLoopMode
Expand Down Expand Up @@ -383,7 +382,9 @@ +(NSRunLoop *)backgroundRunLoop{
[self backgroundThread];
while(!sBackgroundRunLoop){
usleep(1000);
NSLog(@"Waiting for a run loop");
}
NSLog(@"We have a run loop");
return sBackgroundRunLoop;
}

Expand All @@ -394,6 +395,7 @@ @implementation MWURLOperation (NSURLConnectionDelegate)
-(NSURLRequest *)connection:(NSURLConnection *)connection
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)redirectResponse{
NSLog(@"Beginning operation for %@",[request URL]);
BOOL shouldReturn = [self operationShouldRedirectToURL:[request URL]];
[self operationDidBegin];
return (shouldReturn ? request : nil);
Expand All @@ -402,6 +404,7 @@ -(NSURLRequest *)connection:(NSURLConnection *)connection

-(void)connection:(NSURLConnection *)conn didReceiveResponse:(NSHTTPURLResponse *)response{
_response = [response retain];
NSLog(@"Connection received response %i", (int)[response statusCode]);

if([response statusCode] == 303 && [[response allHeaderFields] valueForKey:@"Location"]){
return;
Expand Down Expand Up @@ -454,7 +457,7 @@ - (void)connectionDidFinishLoading:(NSURLConnection *)connection{

[[NSNotificationCenter defaultCenter] postNotificationName:kMWURLOperationDidFinishDownloadingNotification object:self];

// NSLog(@"Calling delegate that we're done: %@",mDelegate);
NSLog(@"Calling delegate that we're done: %@",self.delegate);
[self operationFinished];

[self willChangeValueForKey:@"isExecuting"];
Expand Down Expand Up @@ -591,4 +594,143 @@ -(void)_startConnection{
[[NSNotificationCenter defaultCenter] postNotificationName:kMWURLOperationDidBeginDownloadingNotification object:self];
}

@end

#pragma mark Base64 Support

static char encodingTable[64] = {
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' };

@implementation NSData (Base64)

+ (NSData *) dataWithBase64EncodedString:(NSString *) string {
NSData *result = [[NSData alloc] initWithBase64EncodedString:string];
return [result autorelease];
}

- (id) initWithBase64EncodedString:(NSString *) string {
NSMutableData *mutableData = nil;

if( string ) {
unsigned long ixtext = 0;
unsigned long lentext = 0;
unsigned char ch = 0;
unsigned char inbuf[3], outbuf[4];
short i = 0, ixinbuf = 0;
BOOL flignore = NO;
BOOL flendtext = NO;
NSData *base64Data = nil;
const unsigned char *base64Bytes = nil;

// Convert the string to ASCII data.
base64Data = [string dataUsingEncoding:NSASCIIStringEncoding];
base64Bytes = [base64Data bytes];
mutableData = [NSMutableData dataWithCapacity:[base64Data length]];
lentext = [base64Data length];

while( YES ) {
if( ixtext >= lentext ) break;
ch = base64Bytes[ixtext++];
flignore = NO;

if( ( ch >= 'A' ) && ( ch <= 'Z' ) ) ch = ch - 'A';
else if( ( ch >= 'a' ) && ( ch <= 'z' ) ) ch = ch - 'a' + 26;
else if( ( ch >= '0' ) && ( ch <= '9' ) ) ch = ch - '0' + 52;
else if( ch == '+' ) ch = 62;
else if( ch == '=' ) flendtext = YES;
else if( ch == '/' ) ch = 63;
else flignore = YES;

if( ! flignore ) {
short ctcharsinbuf = 3;
BOOL flbreak = NO;

if( flendtext ) {
if( ! ixinbuf ) break;
if( ( ixinbuf == 1 ) || ( ixinbuf == 2 ) ) ctcharsinbuf = 1;
else ctcharsinbuf = 2;
ixinbuf = 3;
flbreak = YES;
}

inbuf [ixinbuf++] = ch;

if( ixinbuf == 4 ) {
ixinbuf = 0;
outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 );
outbuf [1] = ( ( inbuf[1] & 0x0F ) << 4 ) | ( ( inbuf[2] & 0x3C ) >> 2 );
outbuf [2] = ( ( inbuf[2] & 0x03 ) << 6 ) | ( inbuf[3] & 0x3F );

for( i = 0; i < ctcharsinbuf; i++ )
[mutableData appendBytes:&outbuf[i] length:1];
}

if( flbreak ) break;
}
}
}

self = [self initWithData:mutableData];
return self;
}

- (NSString *) base64EncodingWithLineLength:(unsigned int) lineLength {
const unsigned char *bytes = [self bytes];
NSMutableString *result = [NSMutableString stringWithCapacity:[self length]];
unsigned long ixtext = 0;
unsigned long lentext = [self length];
long ctremaining = 0;
unsigned char inbuf[3], outbuf[4];
short i = 0;
short charsonline = 0, ctcopy = 0;
unsigned long ix = 0;

while( YES ) {
ctremaining = lentext - ixtext;
if( ctremaining <= 0 ) break;

for( i = 0; i < 3; i++ ) {
ix = ixtext + i;
if( ix < lentext ) inbuf[i] = bytes[ix];
else inbuf [i] = 0;
}

outbuf [0] = (inbuf [0] & 0xFC) >> 2;
outbuf [1] = ((inbuf [0] & 0x03) << 4) | ((inbuf [1] & 0xF0) >> 4);
outbuf [2] = ((inbuf [1] & 0x0F) << 2) | ((inbuf [2] & 0xC0) >> 6);
outbuf [3] = inbuf [2] & 0x3F;
ctcopy = 4;

switch( ctremaining ) {
case 1:
ctcopy = 2;
break;
case 2:
ctcopy = 3;
break;
}

for( i = 0; i < ctcopy; i++ )
[result appendFormat:@"%c", encodingTable[outbuf[i]]];

for( i = ctcopy; i < 4; i++ )
[result appendFormat:@"%c",'='];

ixtext += 3;
charsonline += 4;

if( lineLength > 0 ) {
if (charsonline >= lineLength) {
charsonline = 0;
[result appendString:@"\n"];
}
}
}

return result;
}

@end

This file was deleted.

33 changes: 0 additions & 33 deletions MWNetworkingTests/Release/Library/Headers/OCMock/OCMArg.h

This file was deleted.

64 changes: 0 additions & 64 deletions MWNetworkingTests/Release/Library/Headers/OCMock/OCMConstraint.h

This file was deleted.

10 changes: 0 additions & 10 deletions MWNetworkingTests/Release/Library/Headers/OCMock/OCMock.h

This file was deleted.

43 changes: 0 additions & 43 deletions MWNetworkingTests/Release/Library/Headers/OCMock/OCMockObject.h

This file was deleted.

0 comments on commit de85a40

Please sign in to comment.