FLEXNetworkLib to SKFLEXNetworkLib
Summary: rename FLEXNetworkLib to SKFLEXNetworkLib so it doesnt clash with Stock FLEX if embedded in the app too also 'fix' 3 warnings by adding explicit casts Reviewed By: lblasa Differential Revision: D35200011 fbshipit-source-id: 82bdecc5076b86958ea0cb80260584c012940045
This commit is contained in:
committed by
Facebook GitHub Bot
parent
fd23a9d626
commit
8cbb5c4d46
@@ -38,13 +38,13 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
FOUNDATION_EXTERN NSString* const
|
||||
kFLEXNetworkObserverEnabledStateChangedNotification;
|
||||
kSKFLEXNetworkObserverEnabledStateChangedNotification;
|
||||
|
||||
/// This class swizzles NSURLConnection and NSURLSession delegate methods to
|
||||
/// observe events in the URL loading system. High level network events are sent
|
||||
/// to the default FLEXNetworkRecorder instance which maintains the request
|
||||
/// to the default SKFLEXNetworkRecorder instance which maintains the request
|
||||
/// history and caches response bodies.
|
||||
@interface FLEXNetworkObserver : NSObject
|
||||
@interface SKFLEXNetworkObserver : NSObject
|
||||
|
||||
+ (void)start;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -49,14 +49,14 @@
|
||||
#import <FlipperKitNetworkPlugin/SKNetworkReporter.h>
|
||||
|
||||
// Notifications posted when the record is updated
|
||||
extern NSString* const kFLEXNetworkRecorderNewTransactionNotification;
|
||||
extern NSString* const kFLEXNetworkRecorderTransactionUpdatedNotification;
|
||||
extern NSString* const kFLEXNetworkRecorderUserInfoTransactionKey;
|
||||
extern NSString* const kFLEXNetworkRecorderTransactionsClearedNotification;
|
||||
extern NSString* const kSKFLEXNetworkRecorderNewTransactionNotification;
|
||||
extern NSString* const kSKFLEXNetworkRecorderTransactionUpdatedNotification;
|
||||
extern NSString* const kSKFLEXNetworkRecorderUserInfoTransactionKey;
|
||||
extern NSString* const kSKFLEXNetworkRecorderTransactionsClearedNotification;
|
||||
|
||||
@class FLEXNetworkTransaction;
|
||||
@class SKFLEXNetworkTransaction;
|
||||
|
||||
@interface FLEXNetworkRecorder : NSObject
|
||||
@interface SKFLEXNetworkRecorder : NSObject
|
||||
|
||||
/// In general, it only makes sense to have one recorder for the entire
|
||||
/// application.
|
||||
@@ -76,13 +76,13 @@ extern NSString* const kFLEXNetworkRecorderTransactionsClearedNotification;
|
||||
|
||||
// Accessing recorded network activity
|
||||
|
||||
/// Array of FLEXNetworkTransaction objects ordered by start time with the
|
||||
/// Array of SKFLEXNetworkTransaction objects ordered by start time with the
|
||||
/// newest first.
|
||||
- (NSArray<FLEXNetworkTransaction*>*)networkTransactions;
|
||||
- (NSArray<SKFLEXNetworkTransaction*>*)networkTransactions;
|
||||
|
||||
/// The full response data IFF it hasn't been purged due to memory pressure.
|
||||
- (NSData*)cachedResponseBodyForTransaction:
|
||||
(FLEXNetworkTransaction*)transaction;
|
||||
(SKFLEXNetworkTransaction*)transaction;
|
||||
|
||||
/// Dumps all network transactions and cached response bodies.
|
||||
- (void)clearRecordedActivity;
|
||||
@@ -44,43 +44,43 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import "FLEXNetworkRecorder.h"
|
||||
#import "SKFLEXNetworkRecorder.h"
|
||||
|
||||
#import "FLEXNetworkTransaction.h"
|
||||
#import "FLEXUtility.h"
|
||||
#import "SKFLEXNetworkTransaction.h"
|
||||
#import "SKFLEXUtility.h"
|
||||
|
||||
NSString* const kFLEXNetworkRecorderNewTransactionNotification =
|
||||
@"kFLEXNetworkRecorderNewTransactionNotification";
|
||||
NSString* const kFLEXNetworkRecorderTransactionUpdatedNotification =
|
||||
@"kFLEXNetworkRecorderTransactionUpdatedNotification";
|
||||
NSString* const kFLEXNetworkRecorderUserInfoTransactionKey = @"transaction";
|
||||
NSString* const kFLEXNetworkRecorderTransactionsClearedNotification =
|
||||
@"kFLEXNetworkRecorderTransactionsClearedNotification";
|
||||
NSString* const kSKFLEXNetworkRecorderNewTransactionNotification =
|
||||
@"kSKFLEXNetworkRecorderNewTransactionNotification";
|
||||
NSString* const kSKFLEXNetworkRecorderTransactionUpdatedNotification =
|
||||
@"kSKFLEXNetworkRecorderTransactionUpdatedNotification";
|
||||
NSString* const kSKFLEXNetworkRecorderUserInfoTransactionKey = @"transaction";
|
||||
NSString* const kSKFLEXNetworkRecorderTransactionsClearedNotification =
|
||||
@"kSKFLEXNetworkRecorderTransactionsClearedNotification";
|
||||
|
||||
NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
@"com.flex.responseCacheLimit";
|
||||
NSString* const kSKFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
@"com.skflex.responseCacheLimit";
|
||||
|
||||
@interface FLEXNetworkRecorder ()
|
||||
@interface SKFLEXNetworkRecorder ()
|
||||
|
||||
@property(nonatomic, strong) NSCache* responseCache;
|
||||
@property(nonatomic, strong)
|
||||
NSMutableArray<FLEXNetworkTransaction*>* orderedTransactions;
|
||||
NSMutableArray<SKFLEXNetworkTransaction*>* orderedTransactions;
|
||||
@property(nonatomic, strong)
|
||||
NSMutableDictionary<NSString*, FLEXNetworkTransaction*>*
|
||||
NSMutableDictionary<NSString*, SKFLEXNetworkTransaction*>*
|
||||
networkTransactionsForRequestIdentifiers;
|
||||
@property(nonatomic, strong) dispatch_queue_t queue;
|
||||
@property(nonatomic, strong)
|
||||
NSMutableDictionary<NSString*, NSNumber*>* identifierDict;
|
||||
@end
|
||||
|
||||
@implementation FLEXNetworkRecorder
|
||||
@implementation SKFLEXNetworkRecorder
|
||||
|
||||
- (instancetype)init {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_responseCache = [NSCache new];
|
||||
NSUInteger responseCacheLimit = [[[NSUserDefaults standardUserDefaults]
|
||||
objectForKey:kFLEXNetworkRecorderResponseCacheLimitDefaultsKey]
|
||||
objectForKey:kSKFLEXNetworkRecorderResponseCacheLimitDefaultsKey]
|
||||
unsignedIntegerValue];
|
||||
if (responseCacheLimit) {
|
||||
[_responseCache setTotalCostLimit:responseCacheLimit];
|
||||
@@ -95,14 +95,14 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
|
||||
// Serial queue used because we use mutable objects that are not thread safe
|
||||
_queue = dispatch_queue_create(
|
||||
"com.flex.FLEXNetworkRecorder", DISPATCH_QUEUE_SERIAL);
|
||||
"com.skflex.SKFLEXNetworkRecorder", DISPATCH_QUEUE_SERIAL);
|
||||
_identifierDict = [NSMutableDictionary dictionary];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (instancetype)defaultRecorder {
|
||||
static FLEXNetworkRecorder* defaultRecorder = nil;
|
||||
static SKFLEXNetworkRecorder* defaultRecorder = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
defaultRecorder = [[[self class] alloc] init];
|
||||
@@ -124,11 +124,11 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
[self.responseCache setTotalCostLimit:responseCacheByteLimit];
|
||||
[[NSUserDefaults standardUserDefaults]
|
||||
setObject:@(responseCacheByteLimit)
|
||||
forKey:kFLEXNetworkRecorderResponseCacheLimitDefaultsKey];
|
||||
forKey:kSKFLEXNetworkRecorderResponseCacheLimitDefaultsKey];
|
||||
}
|
||||
|
||||
- (NSArray<FLEXNetworkTransaction*>*)networkTransactions {
|
||||
__block NSArray<FLEXNetworkTransaction*>* transactions = nil;
|
||||
- (NSArray<SKFLEXNetworkTransaction*>*)networkTransactions {
|
||||
__block NSArray<SKFLEXNetworkTransaction*>* transactions = nil;
|
||||
dispatch_sync(self.queue, ^{
|
||||
transactions = [self.orderedTransactions copy];
|
||||
});
|
||||
@@ -136,7 +136,7 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
}
|
||||
|
||||
- (NSData*)cachedResponseBodyForTransaction:
|
||||
(FLEXNetworkTransaction*)transaction {
|
||||
(SKFLEXNetworkTransaction*)transaction {
|
||||
return [self.responseCache objectForKey:transaction.requestID];
|
||||
}
|
||||
|
||||
@@ -167,12 +167,12 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
|
||||
SKRequestInfo* info = [[SKRequestInfo alloc]
|
||||
initWithIdentifier:self.identifierDict[requestID].longLongValue
|
||||
timestamp:[NSDate timestamp]
|
||||
timestamp:(uint64_t)[NSDate timestamp]
|
||||
request:request
|
||||
data:request.HTTPBody];
|
||||
[self.delegate didObserveRequest:info];
|
||||
|
||||
FLEXNetworkTransaction* transaction = [FLEXNetworkTransaction new];
|
||||
SKFLEXNetworkTransaction* transaction = [SKFLEXNetworkTransaction new];
|
||||
transaction.requestID = requestID;
|
||||
transaction.request = request;
|
||||
transaction.startTime = requestDate;
|
||||
@@ -180,7 +180,8 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
[self.orderedTransactions insertObject:transaction atIndex:0];
|
||||
[self.networkTransactionsForRequestIdentifiers setObject:transaction
|
||||
forKey:requestID];
|
||||
transaction.transactionState = FLEXNetworkTransactionStateAwaitingResponse;
|
||||
transaction.transactionState =
|
||||
SKFLEXNetworkTransactionStateAwaitingResponse;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -190,13 +191,13 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
NSDate* responseDate = [NSDate date];
|
||||
|
||||
dispatch_async(self.queue, ^{
|
||||
FLEXNetworkTransaction* transaction =
|
||||
SKFLEXNetworkTransaction* transaction =
|
||||
self.networkTransactionsForRequestIdentifiers[requestID];
|
||||
if (!transaction) {
|
||||
return;
|
||||
}
|
||||
transaction.response = response;
|
||||
transaction.transactionState = FLEXNetworkTransactionStateReceivingData;
|
||||
transaction.transactionState = SKFLEXNetworkTransactionStateReceivingData;
|
||||
transaction.latency =
|
||||
-[transaction.startTime timeIntervalSinceDate:responseDate];
|
||||
});
|
||||
@@ -206,7 +207,7 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
- (void)recordDataReceivedWithRequestID:(NSString*)requestID
|
||||
dataLength:(int64_t)dataLength {
|
||||
dispatch_async(self.queue, ^{
|
||||
FLEXNetworkTransaction* transaction =
|
||||
SKFLEXNetworkTransaction* transaction =
|
||||
self.networkTransactionsForRequestIdentifiers[requestID];
|
||||
if (!transaction) {
|
||||
return;
|
||||
@@ -220,17 +221,17 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
responseBody:(NSData*)responseBody {
|
||||
NSDate* finishedDate = [NSDate date];
|
||||
dispatch_async(self.queue, ^{
|
||||
FLEXNetworkTransaction* transaction =
|
||||
SKFLEXNetworkTransaction* transaction =
|
||||
self.networkTransactionsForRequestIdentifiers[requestID];
|
||||
if (!transaction) {
|
||||
return;
|
||||
}
|
||||
transaction.transactionState = FLEXNetworkTransactionStateFinished;
|
||||
transaction.transactionState = SKFLEXNetworkTransactionStateFinished;
|
||||
transaction.duration =
|
||||
-[transaction.startTime timeIntervalSinceDate:finishedDate];
|
||||
SKResponseInfo* responseInfo = [[SKResponseInfo alloc]
|
||||
initWithIndentifier:self.identifierDict[requestID].longLongValue
|
||||
timestamp:[NSDate timestamp]
|
||||
timestamp:(uint64_t)[NSDate timestamp]
|
||||
response:transaction.response
|
||||
data:responseBody];
|
||||
self.identifierDict[requestID] = nil; // Clear the entry
|
||||
@@ -257,7 +258,7 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
- (void)recordLoadingFailedWithRequestID:(NSString*)requestID
|
||||
error:(NSError*)error {
|
||||
dispatch_async(self.queue, ^{
|
||||
FLEXNetworkTransaction* transaction =
|
||||
SKFLEXNetworkTransaction* transaction =
|
||||
self.networkTransactionsForRequestIdentifiers[requestID];
|
||||
if (!transaction) {
|
||||
return;
|
||||
@@ -265,12 +266,12 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
|
||||
SKResponseInfo* responseInfo = [[SKResponseInfo alloc]
|
||||
initWithIndentifier:self.identifierDict[requestID].longLongValue
|
||||
timestamp:[NSDate timestamp]
|
||||
timestamp:(uint64_t)[NSDate timestamp]
|
||||
response:transaction.response
|
||||
data:nil];
|
||||
self.identifierDict[requestID] = nil; // Clear the entry
|
||||
[self.delegate didObserveResponse:responseInfo];
|
||||
transaction.transactionState = FLEXNetworkTransactionStateFailed;
|
||||
transaction.transactionState = SKFLEXNetworkTransactionStateFailed;
|
||||
transaction.duration = -[transaction.startTime timeIntervalSinceNow];
|
||||
transaction.error = error;
|
||||
});
|
||||
@@ -278,7 +279,7 @@ NSString* const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey =
|
||||
|
||||
- (void)recordMechanism:(NSString*)mechanism forRequestID:(NSString*)requestID {
|
||||
dispatch_async(self.queue, ^{
|
||||
FLEXNetworkTransaction* transaction =
|
||||
SKFLEXNetworkTransaction* transaction =
|
||||
self.networkTransactionsForRequestIdentifiers[requestID];
|
||||
if (!transaction) {
|
||||
return;
|
||||
@@ -46,22 +46,22 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_ENUM(NSInteger, FLEXNetworkTransactionState) {
|
||||
FLEXNetworkTransactionStateUnstarted,
|
||||
FLEXNetworkTransactionStateAwaitingResponse,
|
||||
FLEXNetworkTransactionStateReceivingData,
|
||||
FLEXNetworkTransactionStateFinished,
|
||||
FLEXNetworkTransactionStateFailed
|
||||
typedef NS_ENUM(NSInteger, SKFLEXNetworkTransactionState) {
|
||||
SKFLEXNetworkTransactionStateUnstarted,
|
||||
SKFLEXNetworkTransactionStateAwaitingResponse,
|
||||
SKFLEXNetworkTransactionStateReceivingData,
|
||||
SKFLEXNetworkTransactionStateFinished,
|
||||
SKFLEXNetworkTransactionStateFailed
|
||||
};
|
||||
|
||||
@interface FLEXNetworkTransaction : NSObject
|
||||
@interface SKFLEXNetworkTransaction : NSObject
|
||||
|
||||
@property(nonatomic, copy) NSString* requestID;
|
||||
|
||||
@property(nonatomic, strong) NSURLRequest* request;
|
||||
@property(nonatomic, strong) NSURLResponse* response;
|
||||
@property(nonatomic, copy) NSString* requestMechanism;
|
||||
@property(nonatomic, assign) FLEXNetworkTransactionState transactionState;
|
||||
@property(nonatomic, assign) SKFLEXNetworkTransactionState transactionState;
|
||||
@property(nonatomic, strong) NSError* error;
|
||||
|
||||
@property(nonatomic, strong) NSDate* startTime;
|
||||
@@ -74,6 +74,6 @@ typedef NS_ENUM(NSInteger, FLEXNetworkTransactionState) {
|
||||
@property(nonatomic, strong, readonly) NSData* cachedRequestBody;
|
||||
|
||||
+ (NSString*)readableStringFromTransactionState:
|
||||
(FLEXNetworkTransactionState)state;
|
||||
(SKFLEXNetworkTransactionState)state;
|
||||
|
||||
@end
|
||||
@@ -44,15 +44,15 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import "FLEXNetworkTransaction.h"
|
||||
#import "SKFLEXNetworkTransaction.h"
|
||||
|
||||
@interface FLEXNetworkTransaction ()
|
||||
@interface SKFLEXNetworkTransaction ()
|
||||
|
||||
@property(nonatomic, strong, readwrite) NSData* cachedRequestBody;
|
||||
|
||||
@end
|
||||
|
||||
@implementation FLEXNetworkTransaction
|
||||
@implementation SKFLEXNetworkTransaction
|
||||
|
||||
- (NSString*)description {
|
||||
NSString* description = [super description];
|
||||
@@ -94,26 +94,26 @@
|
||||
}
|
||||
|
||||
+ (NSString*)readableStringFromTransactionState:
|
||||
(FLEXNetworkTransactionState)state {
|
||||
(SKFLEXNetworkTransactionState)state {
|
||||
NSString* readableString = nil;
|
||||
switch (state) {
|
||||
case FLEXNetworkTransactionStateUnstarted:
|
||||
case SKFLEXNetworkTransactionStateUnstarted:
|
||||
readableString = @"Unstarted";
|
||||
break;
|
||||
|
||||
case FLEXNetworkTransactionStateAwaitingResponse:
|
||||
case SKFLEXNetworkTransactionStateAwaitingResponse:
|
||||
readableString = @"Awaiting Response";
|
||||
break;
|
||||
|
||||
case FLEXNetworkTransactionStateReceivingData:
|
||||
case SKFLEXNetworkTransactionStateReceivingData:
|
||||
readableString = @"Receiving Data";
|
||||
break;
|
||||
|
||||
case FLEXNetworkTransactionStateFinished:
|
||||
case SKFLEXNetworkTransactionStateFinished:
|
||||
readableString = @"Finished";
|
||||
break;
|
||||
|
||||
case FLEXNetworkTransactionStateFailed:
|
||||
case SKFLEXNetworkTransactionStateFailed:
|
||||
readableString = @"Failed";
|
||||
break;
|
||||
}
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
@end
|
||||
|
||||
@interface FLEXUtility : NSObject
|
||||
@interface SKFLEXUtility : NSObject
|
||||
|
||||
// Swizzling utilities
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import "FLEXUtility.h"
|
||||
#import "SKFLEXUtility.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <mach/mach.h>
|
||||
@@ -54,11 +54,11 @@
|
||||
|
||||
#import <ImageIO/ImageIO.h>
|
||||
|
||||
@implementation FLEXUtility
|
||||
@implementation SKFLEXUtility
|
||||
|
||||
+ (SEL)swizzledSelectorForSelector:(SEL)selector {
|
||||
return NSSelectorFromString(
|
||||
[NSString stringWithFormat:@"_flex_swizzle_%x_%@",
|
||||
[NSString stringWithFormat:@"_skflex_swizzle_%x_%@",
|
||||
arc4random(),
|
||||
NSStringFromSelector(selector)]);
|
||||
}
|
||||
@@ -8,8 +8,8 @@
|
||||
#if FB_SONARKIT_ENABLED
|
||||
|
||||
#import "SKIOSNetworkAdapter.h"
|
||||
#import "FLEXNetworkLib/FLEXNetworkObserver.h"
|
||||
#import "FLEXNetworkLib/FLEXNetworkRecorder.h"
|
||||
#import "SKFLEXNetworkLib/SKFLEXNetworkObserver.h"
|
||||
#import "SKFLEXNetworkLib/SKFLEXNetworkRecorder.h"
|
||||
|
||||
@implementation SKIOSNetworkAdapter
|
||||
@synthesize delegate = _delegate;
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
- (void)setDelegate:(id<SKNetworkReporterDelegate>)delegate {
|
||||
_delegate = delegate;
|
||||
[FLEXNetworkObserver start];
|
||||
[FLEXNetworkRecorder defaultRecorder].delegate = _delegate;
|
||||
[SKFLEXNetworkObserver start];
|
||||
[SKFLEXNetworkRecorder defaultRecorder].delegate = _delegate;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user