Skip to content

Commit 19aeb27

Browse files
committed
feat: added cookiesEnabled property (true by default)
1 parent 005f141 commit 19aeb27

File tree

3 files changed

+46
-17
lines changed

3 files changed

+46
-17
lines changed

src/request.android.ts

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ export function clearCache() {
3939
}
4040
}
4141

42+
// TODO: rewrite this to not have to handle
43+
// every single property
4244
let _timeout = 10;
45+
let _cookiesEnabled = true;
4346

4447
class HttpsResponseLegacy implements IHttpsResponseLegacy {
4548
private callback?: com.nativescript.https.OkHttpResponse.OkHttpResponseAsyncCallback;
@@ -229,7 +232,7 @@ export function disableSSLPinning() {
229232
let Client: okhttp3.OkHttpClient;
230233
let cookieJar: com.nativescript.https.QuotePreservingCookieJar;
231234
let cookieManager: java.net.CookieManager;
232-
function getClient(reload: boolean = false, timeout: number = 10): okhttp3.OkHttpClient {
235+
function getClient(reload: boolean = false, opts: Partial<HttpsRequestOptions> = {}): okhttp3.OkHttpClient {
233236
if (!Client) {
234237
// ssl error fix on KitKat. Only need to be done once.
235238
// client will be null only onced so will run only once
@@ -245,24 +248,48 @@ function getClient(reload: boolean = false, timeout: number = 10): okhttp3.OkHtt
245248
// Client.connectionPool().evictAll()
246249
// Client = null
247250
// }
251+
const timeout = opts.timeout ?? 10;
252+
const cookiesEnabled = opts.cookiesEnabled ?? true;
248253
if (Client && reload === false) {
249-
if (timeout === _timeout) {
254+
const needTimeoutChange = timeout === _timeout;
255+
const needCookiesChange = cookiesEnabled === _cookiesEnabled;
256+
if (!needTimeoutChange && !needCookiesChange) {
250257
return Client;
251258
} else {
252-
return Client.newBuilder()
253-
.connectTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS)
254-
.writeTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS)
255-
.readTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS)
256-
.build();
259+
const builder = Client.newBuilder();
260+
if (needTimeoutChange) {
261+
builder
262+
.connectTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS)
263+
.writeTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS)
264+
.readTimeout(timeout, java.util.concurrent.TimeUnit.SECONDS);
265+
}
266+
if (needCookiesChange) {
267+
if (cookiesEnabled) {
268+
if (!cookieJar) {
269+
cookieManager = new java.net.CookieManager();
270+
cookieManager.setCookiePolicy(java.net.CookiePolicy.ACCEPT_ALL);
271+
cookieJar = new com.nativescript.https.QuotePreservingCookieJar(cookieManager);
272+
}
273+
builder.cookieJar(cookieJar);
274+
} else {
275+
builder.cookieJar(null);
276+
}
277+
}
278+
return builder.build();
257279
}
258280
}
259-
if (!cookieJar) {
260-
cookieManager = new java.net.CookieManager();
261-
cookieManager.setCookiePolicy(java.net.CookiePolicy.ACCEPT_ALL);
262-
cookieJar = new com.nativescript.https.QuotePreservingCookieJar(cookieManager);
281+
const builder = new okhttp3.OkHttpClient.Builder();
282+
283+
_cookiesEnabled = cookiesEnabled;
284+
if (cookiesEnabled) {
285+
if (!cookieJar) {
286+
cookieManager = new java.net.CookieManager();
287+
cookieManager.setCookiePolicy(java.net.CookiePolicy.ACCEPT_ALL);
288+
cookieJar = new com.nativescript.https.QuotePreservingCookieJar(cookieManager);
289+
}
290+
builder.cookieJar(cookieJar);
263291
}
264292

265-
const builder = new okhttp3.OkHttpClient.Builder();
266293
interceptors.forEach((interceptor) => builder.addInterceptor(interceptor));
267294
networkInterceptors.forEach((interceptor) => builder.addNetworkInterceptor(interceptor));
268295
if (peer.enabled === true) {
@@ -333,9 +360,6 @@ function getClient(reload: boolean = false, timeout: number = 10): okhttp3.OkHtt
333360
builder.addInterceptor(com.nativescript.https.CacheInterceptor.INTERCEPTOR);
334361
}
335362
}
336-
if (cookieJar) {
337-
builder.cookieJar(cookieJar);
338-
}
339363

340364
Client = builder.build();
341365
return Client;
@@ -385,7 +409,7 @@ const runningClients: { [k: string]: okhttp3.OkHttpClient } = {};
385409

386410
let OkHttpResponse: typeof com.nativescript.https.OkHttpResponse;
387411
export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = true): HttpsRequest {
388-
const client = getClient(false, opts.timeout);
412+
const client = getClient(false, opts);
389413

390414
const request = new okhttp3.Request.Builder();
391415
request.url(opts.url);

src/request.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ export interface HttpsRequestOptions extends HttpRequestOptions {
5757
onProgress?: (current: number, total: number) => void;
5858

5959
cachePolicy?: CachePolicy;
60+
61+
/**
62+
* default to true
63+
*/
64+
cookiesEnabled?: boolean;
6065
}
6166

6267
export interface HttpsResponse<T = any> {

src/request.ios.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
319319
manager.responseSerializer = AFHTTPResponseSerializer.serializer();
320320
}
321321
manager.requestSerializer.allowsCellularAccess = true;
322-
manager.requestSerializer.HTTPShouldHandleCookies = true;
322+
manager.requestSerializer.HTTPShouldHandleCookies = opts.cookiesEnabled !== false;
323323
manager.securityPolicy = policies.secured === true ? policies.secure : policies.def;
324324

325325
if (opts.cachePolicy) {

0 commit comments

Comments
 (0)