12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- //
- // FLEXNetworkRecorder.h
- // Flipboard
- //
- // Created by Ryan Olson on 2/4/15.
- // Copyright (c) 2020 FLEX Team. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- // Notifications posted when the record is updated
- extern NSString *const kFLEXNetworkRecorderNewTransactionNotification;
- extern NSString *const kFLEXNetworkRecorderTransactionUpdatedNotification;
- extern NSString *const kFLEXNetworkRecorderUserInfoTransactionKey;
- extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
- @class FLEXNetworkTransaction;
- @interface FLEXNetworkRecorder : NSObject
- /// In general, it only makes sense to have one recorder for the entire application.
- @property (nonatomic, readonly, class) FLEXNetworkRecorder *defaultRecorder;
- /// Defaults to 25 MB if never set. Values set here are persisted across launches of the app.
- @property (nonatomic) NSUInteger responseCacheByteLimit;
- /// If NO, the recorder not cache will not cache response for content types
- /// with an "image", "video", or "audio" prefix.
- @property (nonatomic) BOOL shouldCacheMediaResponses;
- @property (nonatomic) NSMutableArray<NSString *> *hostBlacklist;
- /// Call this after adding to or setting the \c hostBlacklist to remove blacklisted transactions
- - (void)clearBlacklistedTransactions;
- /// Call this to save the blacklist to the disk to be loaded next time
- - (void)synchronizeBlacklist;
- // Accessing recorded network activity
- /// Array of FLEXNetworkTransaction objects ordered by start time with the newest first.
- - (NSArray<FLEXNetworkTransaction *> *)networkTransactions;
- /// The full response data IFF it hasn't been purged due to memory pressure.
- - (NSData *)cachedResponseBodyForTransaction:(FLEXNetworkTransaction *)transaction;
- /// Dumps all network transactions and cached response bodies.
- - (void)clearRecordedActivity;
- // Recording network activity
- /// Call when app is about to send HTTP request.
- - (void)recordRequestWillBeSentWithRequestID:(NSString *)requestID
- request:(NSURLRequest *)request
- redirectResponse:(NSURLResponse *)redirectResponse;
- /// Call when HTTP response is available.
- - (void)recordResponseReceivedWithRequestID:(NSString *)requestID response:(NSURLResponse *)response;
- /// Call when data chunk is received over the network.
- - (void)recordDataReceivedWithRequestID:(NSString *)requestID dataLength:(int64_t)dataLength;
- /// Call when HTTP request has finished loading.
- - (void)recordLoadingFinishedWithRequestID:(NSString *)requestID responseBody:(NSData *)responseBody;
- /// Call when HTTP request has failed to load.
- - (void)recordLoadingFailedWithRequestID:(NSString *)requestID 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
|