Преглед на файлове

Add new property`redirects` to class RNFetchBlobResp #111

Ben Hsieh преди 8 години
родител
ревизия
a7dab12f21
променени са 2 файла, в които са добавени 25 реда и са изтрити 0 реда
  1. 16
    0
      src/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java
  2. 9
    0
      src/ios/RNFetchBlobNetwork.m

+ 16
- 0
src/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java Целия файл

17
 import com.facebook.react.bridge.ReadableArray;
17
 import com.facebook.react.bridge.ReadableArray;
18
 import com.facebook.react.bridge.ReadableMap;
18
 import com.facebook.react.bridge.ReadableMap;
19
 import com.facebook.react.bridge.ReadableMapKeySetIterator;
19
 import com.facebook.react.bridge.ReadableMapKeySetIterator;
20
+import com.facebook.react.bridge.WritableArray;
20
 import com.facebook.react.bridge.WritableMap;
21
 import com.facebook.react.bridge.WritableMap;
21
 import com.facebook.react.modules.core.DeviceEventManagerModule;
22
 import com.facebook.react.modules.core.DeviceEventManagerModule;
22
 
23
 
32
 import java.nio.charset.CharacterCodingException;
33
 import java.nio.charset.CharacterCodingException;
33
 import java.nio.charset.Charset;
34
 import java.nio.charset.Charset;
34
 import java.nio.charset.CharsetEncoder;
35
 import java.nio.charset.CharsetEncoder;
36
+import java.util.ArrayList;
35
 import java.util.HashMap;
37
 import java.util.HashMap;
36
 import java.util.concurrent.TimeUnit;
38
 import java.util.concurrent.TimeUnit;
37
 
39
 
72
 
74
 
73
     ReactApplicationContext ctx;
75
     ReactApplicationContext ctx;
74
     RNFetchBlobConfig options;
76
     RNFetchBlobConfig options;
77
+    ArrayList<String> redirects = new ArrayList<>();
75
     String taskId;
78
     String taskId;
76
     String method;
79
     String method;
77
     String url;
80
     String url;
280
 
283
 
281
             final Request req = builder.build();
284
             final Request req = builder.build();
282
 
285
 
286
+            clientBuilder.addNetworkInterceptor(new Interceptor() {
287
+                @Override
288
+                public Response intercept(Chain chain) throws IOException {
289
+                    redirects.add(chain.request().url().toString());
290
+                    return chain.proceed(chain.request());
291
+                }
292
+            });
293
+
283
             // Add request interceptor for upload progress event
294
             // Add request interceptor for upload progress event
284
             clientBuilder.addInterceptor(new Interceptor() {
295
             clientBuilder.addInterceptor(new Interceptor() {
285
                 @Override
296
                 @Override
509
             headers.putString(resp.headers().name(i), resp.headers().value(i));
520
             headers.putString(resp.headers().name(i), resp.headers().value(i));
510
         }
521
         }
511
         info.putMap("headers", headers);
522
         info.putMap("headers", headers);
523
+        WritableArray redirectList = Arguments.createArray();
524
+        for(String r : redirects) {
525
+            redirectList.pushString(r);
526
+        }
527
+        info.putArray("redirects", redirectList);
512
         Headers h = resp.headers();
528
         Headers h = resp.headers();
513
         if(isBlobResp) {
529
         if(isBlobResp) {
514
             info.putString("respType", "blob");
530
             info.putString("respType", "blob");

+ 9
- 0
src/ios/RNFetchBlobNetwork.m Целия файл

36
     long bodyLength;
36
     long bodyLength;
37
     NSMutableDictionary * respInfo;
37
     NSMutableDictionary * respInfo;
38
     NSInteger respStatus;
38
     NSInteger respStatus;
39
+    NSMutableArray * redirects;
39
 }
40
 }
40
 
41
 
41
 @end
42
 @end
125
     self.expectedBytes = 0;
126
     self.expectedBytes = 0;
126
     self.receivedBytes = 0;
127
     self.receivedBytes = 0;
127
     self.options = options;
128
     self.options = options;
129
+    redirects = [[NSMutableArray alloc] init];
130
+    [redirects addObject:req.URL.absoluteString];
128
 
131
 
129
     NSString * path = [self.options valueForKey:CONFIG_FILE_PATH];
132
     NSString * path = [self.options valueForKey:CONFIG_FILE_PATH];
130
     NSString * ext = [self.options valueForKey:CONFIG_FILE_EXT];
133
     NSString * ext = [self.options valueForKey:CONFIG_FILE_EXT];
242
                      @"taskId": taskId,
245
                      @"taskId": taskId,
243
                      @"state": @"2",
246
                      @"state": @"2",
244
                      @"headers": headers,
247
                      @"headers": headers,
248
+                     @"redirects": redirects,
245
                      @"respType" : respType,
249
                      @"respType" : respType,
246
                      @"timeout" : @NO,
250
                      @"timeout" : @NO,
247
                      @"status": [NSString stringWithFormat:@"%d", statusCode ]
251
                      @"status": [NSString stringWithFormat:@"%d", statusCode ]
440
     }
444
     }
441
 }
445
 }
442
 
446
 
447
+- (void) URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler
448
+{
449
+    [redirects addObject:[request.URL absoluteString]];
450
+    completionHandler(request);
451
+}
443
 
452
 
444
 @end
453
 @end