Skip to content

Commit 4e5b513

Browse files
committed
feat(android): support passing custom RequestBody as content parameter
1 parent c4b7870 commit 4e5b513

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/https/request.android.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -478,16 +478,7 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
478478
}
479479
});
480480
okHttpBody = builder.build();
481-
if (opts.onProgress) {
482-
okHttpBody = new com.nativescript.https.ProgressRequestWrapper(
483-
okHttpBody,
484-
new com.nativescript.https.ProgressRequestWrapper.ProgressListener({
485-
onRequestProgress(bytesWritten: number, contentLength: number) {
486-
opts.onProgress(bytesWritten, contentLength);
487-
}
488-
})
489-
);
490-
}
481+
491482
} else if (type === 'application/x-www-form-urlencoded') {
492483
const builder = new okhttp3.FormBody.Builder();
493484
Object.keys(opts.body).forEach((key) => {
@@ -503,7 +494,22 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
503494
} else if (opts.content) {
504495
body = opts.content;
505496
}
506-
okHttpBody = okhttp3.RequestBody.create(okhttp3.MediaType.parse(type), body);
497+
if (body instanceof okhttp3.RequestBody) {
498+
okHttpBody = body;
499+
} else {
500+
okHttpBody = okhttp3.RequestBody.create(body, okhttp3.MediaType.parse(type));
501+
}
502+
}
503+
504+
if (opts.onProgress) {
505+
okHttpBody = new com.nativescript.https.ProgressRequestWrapper(
506+
okHttpBody,
507+
new com.nativescript.https.ProgressRequestWrapper.ProgressListener({
508+
onRequestProgress(bytesWritten: number, contentLength: number) {
509+
opts.onProgress(bytesWritten, contentLength);
510+
}
511+
})
512+
);
507513
}
508514
request[methods[opts.method]](okHttpBody);
509515
}

src/https/request.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ export interface HttpsRequestOptions extends HttpRequestOptions {
3838
headers?: Headers;
3939
params?: HttpsRequestObject;
4040
body?: HttpsRequestObject | HttpsFormDataParam[];
41-
content?: string;
41+
/**
42+
* content can be used to pass native custom okhttp3.RequestBody
43+
*/
44+
content?: string | any;
4245
/**
4346
* Default 10 (seconds).
4447
*/

0 commit comments

Comments
 (0)