| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //
- // 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, strong, 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
|