Sfoglia il codice sorgente

Move setting request mechanism into a separate recorder method.

We need to untangle the mechanism from recordRequestWillBeSent… because we don’t have the full mechanism info (delegate class name) at that time for NSURLSession based requests.
Ryan Olson 11 anni fa
parent
commit
f7d23bc8a2

+ 5 - 2
Classes/Network/FLEXNetworkRecorder.h

@@ -42,8 +42,7 @@ extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
 // Recording network activity
 
 /// Call when app is about to send HTTP request.
-/// This method must be called for each recorded reqeust. Prior to this call, no information will be recorded for the request.
-- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse requestMechanism:(NSString *)mechanism;
+- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;
 
 /// Call when HTTP response is available.
 - (void)recordResponseReceivedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request response:(NSURLResponse *)response;
@@ -57,4 +56,8 @@ extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
 /// Call when HTTP request has failed to load.
 - (void)recordLoadingFailedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request error:(NSError *)error;
 
+/// Call to set the request mechanism anytime after recordRequestWillBeSent... has been called.
+/// This string can be set to anything useful about the API used to make the request.
+- (void)recordMechanism:(NSString *)mechanism forRequestId:(NSString *)requestId;
+
 @end

+ 11 - 2
Classes/Network/FLEXNetworkRecorder.m

@@ -101,7 +101,7 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
 
 #pragma mark - Network Events
 
-- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse requestMechanism:(NSString *)mechanism
+- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
 {
     if (redirectResponse) {
         [self recordResponseReceivedWithRequestId:requestId request:request response:redirectResponse];
@@ -111,7 +111,6 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
     dispatch_async(self.queue, ^{
         FLEXNetworkTransaction *transaction = [self addOrRetrieveTransactionForRequestId:requestId request:request];
         transaction.transactionState = FLEXNetworkTransactionStateAwaitingResponse;
-        transaction.requestMechanism = mechanism;
 
         [self postNewTransactionNotificationWithTransaction:transaction];
     });
@@ -204,6 +203,16 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
     });
 }
 
+- (void)recordMechanism:(NSString *)mechanism forRequestId:(NSString *)requestId
+{
+    dispatch_async(self.queue, ^{
+        FLEXNetworkTransaction *transaction = [self addOrRetrieveTransactionForRequestId:requestId request:nil];
+        transaction.requestMechanism = mechanism;
+
+        [self postUpdateNotificationForTransaction:transaction];
+    });
+}
+
 /// Should only be called on the serial queue used in this class
 - (FLEXNetworkTransaction *)addOrRetrieveTransactionForRequestId:(NSString *)requestId request:(NSURLRequest *)request
 {

+ 11 - 6
Classes/Network/PonyDebugger/FLEXNetworkObserver.m

@@ -786,7 +786,9 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
     [self performBlock:^{
         [self setRequest:request forConnection:connection];
         NSString *requestId = [self requestIDForConnection:connection];
-        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestId request:request redirectResponse:response requestMechanism:[NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]]];
+        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestId request:request redirectResponse:response];
+        NSString *mechanism = [NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:mechanism forRequestId:requestId];
     }];
 }
 
@@ -799,7 +801,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         if (!request) {
             request = connection.currentRequest;
             [self setRequest:request forConnection:connection];
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForConnection:connection] request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForConnection:connection] request:request redirectResponse:nil];
         }
 
         NSMutableData *dataAccumulator = nil;
@@ -863,7 +865,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
 {
     [self performBlock:^{
         [self setRequest:request forTask:task];
-        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:task] request:request redirectResponse:response requestMechanism:[NSString stringWithFormat:@"NSURLSessionTask (delegate: %@)", [delegate class]]];
+        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:task] request:request redirectResponse:response];
     }];
 }
 
@@ -876,7 +878,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
             request = dataTask.currentRequest;
             [self setRequest:request forTask:dataTask];
 
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:dataTask] request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLSessionDataTask (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:dataTask] request:request redirectResponse:nil];
         }
 
         NSMutableData *dataAccumulator = nil;
@@ -889,6 +891,8 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         [self setAccumulatedData:dataAccumulator forTask:dataTask];
 
         NSString *requestID = [self requestIDForTask:dataTask];
+        NSString *requestMechanism = [NSString stringWithFormat:@"NSURLSessionDataTask (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:requestMechanism forRequestId:requestID];
         [[FLEXNetworkRecorder defaultRecorder] recordResponseReceivedWithRequestId:requestID request:dataTask.currentRequest response:response];
     }];
 }
@@ -946,7 +950,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
             [self setRequest:request forTask:downloadTask];
             NSString *requestID = [self requestIDForTask:downloadTask];
 
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestID request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLSessionDownloadTask (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestID request:request redirectResponse:nil];
 
             NSMutableData *dataAccumulator = nil;
             dataAccumulator = [[NSMutableData alloc] initWithCapacity:(NSUInteger) totalBytesExpectedToWrite];
@@ -956,7 +960,8 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         }
 
         NSString *requestID = [self requestIDForTask:downloadTask];
-
+        NSString *requestMechanism = [NSString stringWithFormat:@"NSURLSessionDownloadTask (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:requestMechanism forRequestId:requestID];
         [[FLEXNetworkRecorder defaultRecorder] recordDataReceivedWithRequestId:requestID request:downloadTask.currentRequest dataLength:bytesWritten];
     }];
 }