FLEXManager+Networking.m 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // FLEXManager+Networking.m
  3. // FLEX
  4. //
  5. // Created by Tanner on 2/1/20.
  6. // Copyright © 2020 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXManager+Networking.h"
  9. #import "FLEXManager+Private.h"
  10. #import "FLEXNetworkObserver.h"
  11. #import "FLEXNetworkRecorder.h"
  12. #import "FLEXObjectExplorerFactory.h"
  13. @implementation FLEXManager (Networking)
  14. + (void)load {
  15. dispatch_async(dispatch_get_main_queue(), ^{
  16. // Register array/dictionary viewer for JSON responses
  17. [self.sharedManager setCustomViewerForContentType:@"application/json"
  18. viewControllerFutureBlock:^UIViewController *(NSData *data) {
  19. id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
  20. if (jsonObject) {
  21. return [FLEXObjectExplorerFactory explorerViewControllerForObject:jsonObject];
  22. }
  23. return nil;
  24. }
  25. ];
  26. });
  27. }
  28. - (BOOL)isNetworkDebuggingEnabled {
  29. return FLEXNetworkObserver.isEnabled;
  30. }
  31. - (void)setNetworkDebuggingEnabled:(BOOL)networkDebuggingEnabled {
  32. FLEXNetworkObserver.enabled = networkDebuggingEnabled;
  33. }
  34. - (NSUInteger)networkResponseCacheByteLimit {
  35. return FLEXNetworkRecorder.defaultRecorder.responseCacheByteLimit;
  36. }
  37. - (void)setNetworkResponseCacheByteLimit:(NSUInteger)networkResponseCacheByteLimit {
  38. FLEXNetworkRecorder.defaultRecorder.responseCacheByteLimit = networkResponseCacheByteLimit;
  39. }
  40. - (NSMutableArray<NSString *> *)networkRequestHostBlacklist {
  41. return FLEXNetworkRecorder.defaultRecorder.hostBlacklist;
  42. }
  43. - (void)setNetworkRequestHostBlacklist:(NSMutableArray<NSString *> *)networkRequestHostBlacklist {
  44. FLEXNetworkRecorder.defaultRecorder.hostBlacklist = networkRequestHostBlacklist;
  45. }
  46. - (void)setCustomViewerForContentType:(NSString *)contentType
  47. viewControllerFutureBlock:(FLEXCustomContentViewerFuture)viewControllerFutureBlock {
  48. NSParameterAssert(contentType.length);
  49. NSParameterAssert(viewControllerFutureBlock);
  50. NSAssert(NSThread.isMainThread, @"This method must be called from the main thread.");
  51. self.customContentTypeViewers[contentType.lowercaseString] = viewControllerFutureBlock;
  52. }
  53. @end