File tree Expand file tree Collapse file tree
packages/react-native/React/Base Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77
88#import < Foundation/Foundation.h>
99
10+ #import < React/RCTDefines.h>
1011#import < React/RCTMultipartStreamReader.h>
1112
1213typedef void (^RCTMultipartDataTaskCallback)(
@@ -16,6 +17,14 @@ typedef void (^RCTMultipartDataTaskCallback)(
1617 NSError *error,
1718 BOOL done);
1819
20+ typedef NSURLRequest * _Nullable (^RCTMultipartDataTaskRequestInterceptor)(NSURLRequest *request);
21+ /* *
22+ * The block provided via this function can inspect/modify multipart data task
23+ * requests before they are sent. Return a modified request to override, or nil
24+ * to use the original request unchanged.
25+ */
26+ RCT_EXTERN void RCTSetCustomMultipartDataTaskRequestInterceptor (RCTMultipartDataTaskRequestInterceptor /* interceptor*/ );
27+
1928@interface RCTMultipartDataTask : NSObject
2029
2130- (instancetype )initWithURL : (NSURL *)url
Original file line number Diff line number Diff line change 77
88#import " RCTMultipartDataTask.h"
99
10- #import " RCTDevSupportHttpHeaders.h"
10+ static RCTMultipartDataTaskRequestInterceptor multipartRequestInterceptor;
11+
12+ void RCTSetCustomMultipartDataTaskRequestInterceptor (RCTMultipartDataTaskRequestInterceptor interceptor)
13+ {
14+ multipartRequestInterceptor = interceptor;
15+ }
1116
1217@interface RCTMultipartDataTask () <NSURLSessionDataDelegate , NSURLSessionDataDelegate >
1318
@@ -42,8 +47,15 @@ - (void)startTask
4247 delegateQueue: nil ];
4348 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: _url];
4449 [request addValue: @" multipart/mixed" forHTTPHeaderField: @" Accept" ];
45- [[RCTDevSupportHttpHeaders sharedInstance ] applyHeadersToRequest: request];
46- NSURLSessionDataTask *dataTask = [session dataTaskWithRequest: request];
50+ NSURLRequest *finalRequest = request;
51+ if (multipartRequestInterceptor != nil ) {
52+ NSURLRequest *intercepted = multipartRequestInterceptor (request);
53+ if (intercepted != nil ) {
54+ finalRequest = intercepted;
55+ }
56+ }
57+ NSLog (@" [RCTMultipartDataTask] %@ %@ " , finalRequest.HTTPMethod ?: @" GET" , finalRequest.URL .absoluteString );
58+ NSURLSessionDataTask *dataTask = [session dataTaskWithRequest: finalRequest];
4759 [dataTask resume ];
4860 [session finishTasksAndInvalidate ];
4961}
You can’t perform that action at this time.
0 commit comments