You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
//
|
|
// FLEXNetworkTransaction.m
|
|
// Flipboard
|
|
//
|
|
// Created by Ryan Olson on 2/8/15.
|
|
// Copyright (c) 2015 Flipboard. All rights reserved.
|
|
//
|
|
|
|
#import "FLEXNetworkTransaction.h"
|
|
|
|
@interface FLEXNetworkTransaction ()
|
|
|
|
@property (nonatomic, readwrite) NSData *cachedRequestBody;
|
|
|
|
@end
|
|
|
|
@implementation FLEXNetworkTransaction
|
|
|
|
- (NSString *)description
|
|
{
|
|
NSString *description = [super description];
|
|
|
|
description = [description stringByAppendingFormat:@" id = %@;", self.requestID];
|
|
description = [description stringByAppendingFormat:@" url = %@;", self.request.URL];
|
|
description = [description stringByAppendingFormat:@" duration = %f;", self.duration];
|
|
description = [description stringByAppendingFormat:@" receivedDataLength = %lld", self.receivedDataLength];
|
|
|
|
return description;
|
|
}
|
|
|
|
- (NSData *)cachedRequestBody {
|
|
if (!_cachedRequestBody) {
|
|
if (self.request.HTTPBody != nil) {
|
|
_cachedRequestBody = self.request.HTTPBody;
|
|
} else if ([self.request.HTTPBodyStream conformsToProtocol:@protocol(NSCopying)]) {
|
|
NSInputStream *bodyStream = [self.request.HTTPBodyStream copy];
|
|
const NSUInteger bufferSize = 1024;
|
|
uint8_t buffer[bufferSize];
|
|
NSMutableData *data = [NSMutableData data];
|
|
[bodyStream open];
|
|
NSInteger readBytes = 0;
|
|
do {
|
|
readBytes = [bodyStream read:buffer maxLength:bufferSize];
|
|
[data appendBytes:buffer length:readBytes];
|
|
} while (readBytes > 0);
|
|
[bodyStream close];
|
|
_cachedRequestBody = data;
|
|
}
|
|
}
|
|
return _cachedRequestBody;
|
|
}
|
|
|
|
+ (NSString *)readableStringFromTransactionState:(FLEXNetworkTransactionState)state
|
|
{
|
|
NSString *readableString = nil;
|
|
switch (state) {
|
|
case FLEXNetworkTransactionStateUnstarted:
|
|
readableString = @"Unstarted";
|
|
break;
|
|
|
|
case FLEXNetworkTransactionStateAwaitingResponse:
|
|
readableString = @"Awaiting Response";
|
|
break;
|
|
|
|
case FLEXNetworkTransactionStateReceivingData:
|
|
readableString = @"Receiving Data";
|
|
break;
|
|
|
|
case FLEXNetworkTransactionStateFinished:
|
|
readableString = @"Finished";
|
|
break;
|
|
|
|
case FLEXNetworkTransactionStateFailed:
|
|
readableString = @"Failed";
|
|
break;
|
|
}
|
|
return readableString;
|
|
}
|
|
|
|
@end
|