Skip to content

Commit 4ea868f

Browse files
Jacsewkh237
authored andcommitted
Android share cookies w/ RN, remove cookie utils (joltup#388)
1 parent fd9f20d commit 4ea868f

File tree

9 files changed

+27
-257
lines changed

9 files changed

+27
-257
lines changed

android/src/main/java/com/RNFetchBlob/RNFetchBlob.java

+20-37
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import android.app.Activity;
44
import android.content.Intent;
55
import android.net.Uri;
6-
import android.util.Log;
76

8-
import com.RNFetchBlob.Utils.RNFBCookieJar;
97
import com.facebook.react.bridge.ActivityEventListener;
108
import com.facebook.react.bridge.Callback;
119
import com.facebook.react.bridge.LifecycleEventListener;
@@ -15,12 +13,16 @@
1513
import com.facebook.react.bridge.ReactMethod;
1614
import com.facebook.react.bridge.ReadableArray;
1715
import com.facebook.react.bridge.ReadableMap;
18-
import com.facebook.react.bridge.WritableArray;
19-
import com.facebook.react.bridge.WritableMap;
16+
17+
// Cookies
18+
import com.facebook.react.modules.network.ForwardingCookieHandler;
19+
import com.facebook.react.modules.network.CookieJarContainer;
20+
import com.facebook.react.modules.network.OkHttpClientProvider;
21+
import okhttp3.OkHttpClient;
22+
import okhttp3.JavaNetCookieJar;
2023

2124
import java.util.HashMap;
2225
import java.util.Map;
23-
import java.util.UUID;
2426
import java.util.concurrent.LinkedBlockingQueue;
2527
import java.util.concurrent.ThreadPoolExecutor;
2628
import java.util.concurrent.TimeUnit;
@@ -30,6 +32,11 @@
3032

3133
public class RNFetchBlob extends ReactContextBaseJavaModule {
3234

35+
// Cookies
36+
private final ForwardingCookieHandler mCookieHandler;
37+
private final CookieJarContainer mCookieJarContainer;
38+
private final OkHttpClient mClient;
39+
3340
static ReactApplicationContext RCTContext;
3441
static LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>();
3542
static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, taskQueue);
@@ -42,6 +49,11 @@ public RNFetchBlob(ReactApplicationContext reactContext) {
4249

4350
super(reactContext);
4451

52+
mClient = OkHttpClientProvider.getOkHttpClient();
53+
mCookieHandler = new ForwardingCookieHandler(reactContext);
54+
mCookieJarContainer = (CookieJarContainer) mClient.cookieJar();
55+
mCookieJarContainer.setCookieJar(new JavaNetCookieJar(mCookieHandler));
56+
4557
RCTContext = reactContext;
4658
reactContext.addActivityEventListener(new ActivityEventListener() {
4759
@Override
@@ -252,35 +264,6 @@ public void run() {
252264

253265
}
254266

255-
@ReactMethod
256-
/**
257-
* Get cookies belongs specific host.
258-
* @param host String domain name.
259-
*/
260-
public void getCookies(String domain, Promise promise) {
261-
try {
262-
WritableMap cookies = RNFBCookieJar.getCookies(domain);
263-
promise.resolve(cookies);
264-
} catch(Exception err) {
265-
promise.reject("RNFetchBlob.getCookies", err.getMessage());
266-
}
267-
}
268-
269-
@ReactMethod
270-
/**
271-
* Remove cookies for specific domain
272-
* @param domain String of the domain
273-
* @param promise JSC promise injected by RN
274-
*/
275-
public void removeCookies(String domain, Promise promise) {
276-
try {
277-
RNFBCookieJar.removeCookies(domain);
278-
promise.resolve(null);
279-
} catch(Exception err) {
280-
promise.reject("RNFetchBlob.removeCookies", err.getMessage());
281-
}
282-
}
283-
284267
@ReactMethod
285268
/**
286269
* @param path Stream file path
@@ -338,12 +321,12 @@ public void enableUploadProgressReport(String taskId, int interval, int count) {
338321

339322
@ReactMethod
340323
public void fetchBlob(ReadableMap options, String taskId, String method, String url, ReadableMap headers, String body, final Callback callback) {
341-
new RNFetchBlobReq(options, taskId, method, url, headers, body, null, callback).run();
342-
}
324+
new RNFetchBlobReq(options, taskId, method, url, headers, body, null, mClient, callback).run();
325+
}
343326

344327
@ReactMethod
345328
public void fetchBlobForm(ReadableMap options, String taskId, String method, String url, ReadableMap headers, ReadableArray body, final Callback callback) {
346-
new RNFetchBlobReq(options, taskId, method, url, headers, null, body, callback).run();
329+
new RNFetchBlobReq(options, taskId, method, url, headers, null, body, mClient, callback).run();
347330
}
348331

349332
@ReactMethod

android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java

+5-10
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import com.RNFetchBlob.Response.RNFetchBlobDefaultResp;
1313
import com.RNFetchBlob.Response.RNFetchBlobFileResp;
14-
import com.RNFetchBlob.Utils.RNFBCookieJar;
1514
import com.facebook.react.bridge.Arguments;
1615
import com.facebook.react.bridge.Callback;
1716
import com.facebook.react.bridge.ReactApplicationContext;
@@ -21,14 +20,12 @@
2120
import com.facebook.react.bridge.WritableArray;
2221
import com.facebook.react.bridge.WritableMap;
2322
import com.facebook.react.modules.core.DeviceEventManagerModule;
23+
import com.facebook.react.modules.network.OkHttpClientProvider;
2424

2525
import java.io.File;
2626
import java.io.FileOutputStream;
2727
import java.io.IOException;
2828
import java.io.InputStream;
29-
import java.net.CookieHandler;
30-
import java.net.CookieManager;
31-
import java.net.CookiePolicy;
3229
import java.net.MalformedURLException;
3330
import java.net.SocketException;
3431
import java.net.SocketTimeoutException;
@@ -43,7 +40,6 @@
4340

4441
import okhttp3.Call;
4542
import okhttp3.ConnectionPool;
46-
import okhttp3.CookieJar;
4743
import okhttp3.Headers;
4844
import okhttp3.Interceptor;
4945
import okhttp3.MediaType;
@@ -98,8 +94,9 @@ enum ResponseFormat {
9894
WritableMap respInfo;
9995
boolean timeout = false;
10096
ArrayList<String> redirects = new ArrayList<>();
97+
OkHttpClient client;
10198

102-
public RNFetchBlobReq(ReadableMap options, String taskId, String method, String url, ReadableMap headers, String body, ReadableArray arrayBody, final Callback callback) {
99+
public RNFetchBlobReq(ReadableMap options, String taskId, String method, String url, ReadableMap headers, String body, ReadableArray arrayBody, OkHttpClient client, final Callback callback) {
103100
this.method = method.toUpperCase();
104101
this.options = new RNFetchBlobConfig(options);
105102
this.taskId = taskId;
@@ -108,6 +105,7 @@ public RNFetchBlobReq(ReadableMap options, String taskId, String method, String
108105
this.callback = callback;
109106
this.rawRequestBody = body;
110107
this.rawRequestBodyArray = arrayBody;
108+
this.client = client;
111109

112110
if(this.options.fileCache || this.options.path != null)
113111
responseType = ResponseType.FileStorage;
@@ -196,7 +194,7 @@ else if(this.options.fileCache)
196194
if (this.options.trusty) {
197195
clientBuilder = RNFetchBlobUtils.getUnsafeOkHttpClient();
198196
} else {
199-
clientBuilder = new OkHttpClient.Builder();
197+
clientBuilder = client.newBuilder();
200198
}
201199

202200
final Request.Builder builder = new Request.Builder();
@@ -297,10 +295,7 @@ else if(cType.isEmpty()) {
297295
}
298296

299297
// #156 fix cookie issue
300-
301-
302298
final Request req = builder.build();
303-
clientBuilder.cookieJar(new RNFBCookieJar());
304299
clientBuilder.addNetworkInterceptor(new Interceptor() {
305300
@Override
306301
public Response intercept(Chain chain) throws IOException {

android/src/main/java/com/RNFetchBlob/RNFetchBlobUtils.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public static void emitWarningEvent(String data) {
5252
.emit(RNFetchBlobConst.EVENT_MESSAGE, args);
5353
}
5454

55-
public static OkHttpClient.Builder getUnsafeOkHttpClient() {
55+
public static OkHttpClient.Builder getUnsafeOkHttpClient(OkHttpClient client) {
5656
try {
5757
// Create a trust manager that does not validate certificate chains
5858
final TrustManager[] trustAllCerts = new TrustManager[]{
@@ -78,7 +78,7 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
7878
// Create an ssl socket factory with our all-trusting manager
7979
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
8080

81-
OkHttpClient.Builder builder = new OkHttpClient.Builder();
81+
OkHttpClient.Builder builder = client.newBuilder();
8282
builder.sslSocketFactory(sslSocketFactory);
8383
builder.hostnameVerifier(new HostnameVerifier() {
8484
@Override

android/src/main/java/com/RNFetchBlob/Utils/RNFBCookieJar.java

-66
This file was deleted.

index.js

-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import polyfill from './polyfill'
2525
import _ from 'lodash'
2626
import android from './android'
2727
import ios from './ios'
28-
import net from './net'
2928
import JSONStream from './json-stream'
3029
const {
3130
RNFetchBlobSession,
@@ -564,7 +563,6 @@ export default {
564563
session,
565564
fs,
566565
wrap,
567-
net,
568566
polyfill,
569567
JSONStream
570568
}

ios/RNFetchBlob/RNFetchBlob.m

-19
Original file line numberDiff line numberDiff line change
@@ -580,25 +580,6 @@ - (UIViewController *) documentInteractionControllerViewControllerForPreview: (U
580580
return window.rootViewController;
581581
}
582582

583-
# pragma mark - getCookies
584-
585-
RCT_EXPORT_METHOD(getCookies:(NSString *)url resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
586-
{
587-
resolve([RNFetchBlobNetwork getCookies:url]);
588-
}
589-
590-
# pragma mark - removeCookie
591-
592-
RCT_EXPORT_METHOD(removeCookies:(NSString *)domain resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
593-
{
594-
NSError * err = nil;
595-
[RNFetchBlobNetwork removeCookies:domain error:&err];
596-
if(err)
597-
reject(@"RNFetchBlob failed to remove cookie", @"RNFetchBlob failed to remove cookie", nil);
598-
else
599-
resolve(@[[NSNull null]]);
600-
}
601-
602583
# pragma mark - check expired network events
603584

604585
RCT_EXPORT_METHOD(emitExpiredEvent:(RCTResponseSenderBlock)callback)

ios/RNFetchBlobNetwork.h

-2
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,8 @@ typedef void(^DataTaskCompletionHander) (NSData * _Nullable resp, NSURLResponse
4949
- (nullable id) init;
5050
- (void) sendRequest;
5151
- (void) sendRequest:(NSDictionary * _Nullable )options contentLength:(long)contentLength bridge:(RCTBridge * _Nullable)bridgeRef taskId:(NSString * _Nullable)taskId withRequest:(NSURLRequest * _Nullable)req callback:(_Nullable RCTResponseSenderBlock) callback;
52-
+ (void) removeCookies:(NSString *) domain error:(NSError **)error;
5352
+ (void) enableProgressReport:(NSString *) taskId config:(RNFetchBlobProgress *)config;
5453
+ (void) enableUploadProgress:(NSString *) taskId config:(RNFetchBlobProgress *)config;
55-
+ (NSDictionary *) getCookies:(NSString *) url;
5654

5755

5856

0 commit comments

Comments
 (0)