Skip to content

Commit b1267e4

Browse files
committed
Merge branch 'refactor'
2 parents 151a32f + 6ae3a36 commit b1267e4

File tree

7 files changed

+91
-52
lines changed

7 files changed

+91
-52
lines changed

demo-vue

docs/interfaces/HttpsRequestOptions.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ <h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code
5757
<li>Defined in packages/https/request.d.ts:55</li></ul></aside></section>
5858
<section class="tsd-panel tsd-member"><a id="body" class="tsd-anchor"></a>
5959
<h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>body</span><a href="#body" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3>
60-
<div class="tsd-signature"><span class="tsd-kind-property">body</span><span class="tsd-signature-symbol">?:</span> <a href="HttpsRequestObject.html" class="tsd-signature-type tsd-kind-interface">HttpsRequestObject</a><span class="tsd-signature-symbol"> | </span><a href="HttpsFormDataParam.html" class="tsd-signature-type tsd-kind-interface">HttpsFormDataParam</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources">
60+
<div class="tsd-signature"><span class="tsd-kind-property">body</span><span class="tsd-signature-symbol">?:</span> <a href="HttpsRequestObject.html" class="tsd-signature-type tsd-kind-interface">HttpsRequestObject</a><span class="tsd-signature-symbol"> | </span><a href="HttpsFormDataParam.html" class="tsd-signature-type tsd-kind-interface">HttpsFormDataParam</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">File</span></div><aside class="tsd-sources">
6161
<ul>
6262
<li>Defined in packages/https/request.d.ts:40</li></ul></aside></section>
6363
<section class="tsd-panel tsd-member"><a id="cachePolicy" class="tsd-anchor"></a>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"plugin.watch.android": "npm i && npm-watch build.android",
1717
"plugin.watch.ios": "npm i && npm-watch build.ios",
1818
"plugin.watch": "npm run plugin.watch.tsc & npm run plugin.watch.android & npm run plugin.watch.ios",
19-
"publish": "npm run setup && npm run clean && npm run build.all && npm run readme && npm run doc && npm run commit_readme_doc_changes && lerna publish",
19+
"publish": "npm run setup && npm run clean && npm run build.all && npm run readme && npm run doc && npm run commit_readme_doc_changes ; lerna publish",
2020
"publish.major": "npm run build && lerna publish major --create-release=github --force-publish",
2121
"sync": "node ./tools/sync.js",
2222
"commitmsg": "commitlint -e $GIT_PARAMS",

src/https/request.android.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -474,19 +474,19 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
474474
request.cacheControl(cacheControlBuilder.build());
475475
}
476476

477-
const methods = {
478-
GET: 'get',
479-
HEAD: 'head',
480-
DELETE: 'delete',
481-
POST: 'post',
482-
PUT: 'put',
483-
PATCH: 'patch'
484-
};
485-
let type;
486-
if (['GET', 'HEAD'].indexOf(opts.method) !== -1 || (opts.method === 'DELETE' && !Utils.isDefined(opts.body) && !Utils.isDefined(opts.content))) {
487-
request[methods[opts.method]]();
488-
} else {
489-
type = opts.headers && opts.headers['Content-Type'] ? opts.headers['Content-Type'] : 'application/json';
477+
// const methods = {
478+
// GET: 'get',
479+
// HEAD: 'head',
480+
// DELETE: 'delete',
481+
// POST: 'post',
482+
// PUT: 'put',
483+
// PATCH: 'patch'
484+
// };
485+
// let type;
486+
// if (['GET', 'HEAD'].indexOf(opts.method) !== -1 || (opts.method === 'DELETE' && !Utils.isDefined(opts.body) && !Utils.isDefined(opts.content))) {
487+
// request[methods[opts.method]]();
488+
// } else {
489+
let type = opts.headers && opts.headers['Content-Type'] ? opts.headers['Content-Type'] : 'application/json';
490490
const MEDIA_TYPE = okhttp3.MediaType.parse(type);
491491
let okHttpBody: okhttp3.RequestBody;
492492
if (type.startsWith('multipart/form-data')) {
@@ -518,20 +518,27 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
518518
} else {
519519
let body;
520520
if (opts.body) {
521-
try {
522-
body = JSON.stringify(opts.body);
523-
} catch (ignore) {}
521+
// TODO: add support for Buffers
522+
if (opts.body instanceof File) {
523+
okHttpBody = okhttp3.RequestBody.create(new java.io.File(opts.body.path), okhttp3.MediaType.parse(type));
524+
} else if (typeof opts.body === 'string') {
525+
body = opts.body;
526+
} else{
527+
try {
528+
body = JSON.stringify(opts.body);
529+
} catch (ignore) {}
530+
}
524531
} else if (opts.content) {
525532
body = opts.content;
526533
}
527534
if (body instanceof okhttp3.RequestBody) {
528535
okHttpBody = body;
529-
} else {
536+
} else if (body) {
530537
okHttpBody = okhttp3.RequestBody.create(body, okhttp3.MediaType.parse(type));
531538
}
532539
}
533540

534-
if (opts.onProgress) {
541+
if (okHttpBody && opts.onProgress) {
535542
okHttpBody = new com.nativescript.https.ProgressRequestWrapper(
536543
okHttpBody,
537544
new com.nativescript.https.ProgressRequestWrapper.ProgressListener({
@@ -541,8 +548,9 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
541548
})
542549
);
543550
}
544-
request[methods[opts.method]](okHttpBody);
545-
}
551+
request.method(opts.method, okHttpBody);
552+
// request[methods[opts.method]](okHttpBody);
553+
// }
546554
const tag = opts.tag || `okhttp_request_${CALL_ID++}`;
547555
const call = client.newCall(request.tag(tag).build());
548556
runningClients[tag] = client;

src/https/request.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export interface HttpsRequestOptions extends HttpRequestOptions {
3737
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';
3838
headers?: Headers;
3939
params?: HttpsRequestObject;
40-
body?: HttpsRequestObject | HttpsFormDataParam[];
40+
body?: HttpsRequestObject | HttpsFormDataParam[] | File;
4141
/**
4242
* content can be used to pass native custom okhttp3.RequestBody
4343
*/

src/https/request.ios.ts

Lines changed: 58 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,6 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
368368
);
369369
}
370370

371-
let dict = null;
372-
if (opts.body) {
373-
dict = NSJSONSerialization.JSONObjectWithDataOptionsError(NSString.stringWithString(JSON.stringify(opts.body)).dataUsingEncoding(NSUTF8StringEncoding), 0 as any);
374-
} else if (opts.content) {
375-
dict = NSJSONSerialization.JSONObjectWithDataOptionsError(NSString.stringWithString(opts.content).dataUsingEncoding(NSUTF8StringEncoding), 0 as any);
376-
}
377371

378372
manager.requestSerializer.timeoutInterval = opts.timeout ? opts.timeout : 10;
379373

@@ -467,29 +461,66 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
467461
default:
468462
throw new Error('method_not_supported_multipart');
469463
}
464+
} else if (opts.method === 'PUT'){
465+
if (opts.body instanceof File) {
466+
const request = NSURLRequest.requestWithURL(NSURL.URLWithString(opts.url));
467+
task = manager.uploadTaskWithRequestFromFileProgressCompletionHandler(request, NSURL.fileURLWithPath(opts.body.path), progress, (response: NSURLResponse, responseObject: any, error: NSError)=>{
468+
if (error){
469+
failure(task, error);
470+
} else {
471+
success(task, responseObject);
472+
}
473+
});
474+
} else {
475+
let data: NSData;
476+
// TODO: add support for Buffers
477+
if (opts.content instanceof NSData) {
478+
data = opts.content;
479+
} else if (typeof opts.body === 'string') {
480+
data = NSString.stringWithString(opts.body).dataUsingEncoding(NSUTF8StringEncoding);
481+
} else {
482+
data = NSString.stringWithString(JSON.stringify(opts.body)).dataUsingEncoding(NSUTF8StringEncoding);
483+
}
484+
const request = NSURLRequest.requestWithURL(NSURL.URLWithString(opts.url));
485+
task = manager.uploadTaskWithRequestFromDataProgressCompletionHandler(request, data, progress, (response: NSURLResponse, responseObject: any, error: NSError)=>{
486+
if (error){
487+
failure(task, error);
488+
} else {
489+
success(task, responseObject);
490+
}
491+
});
492+
}
470493
} else {
471-
switch (opts.method) {
472-
case 'GET':
473-
task = manager.GETParametersHeadersProgressSuccessFailure(opts.url, dict, headers, progress, success, failure);
474-
break;
475-
case 'POST':
476-
task = manager.POSTParametersHeadersProgressSuccessFailure(opts.url, dict, headers, progress, success, failure);
477-
break;
478-
case 'PUT':
479-
task = manager.PUTParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
480-
break;
481-
case 'DELETE':
482-
task = manager.DELETEParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
483-
break;
484-
case 'PATCH':
485-
task = manager.PATCHParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
486-
break;
487-
case 'HEAD':
488-
task = manager.HEADParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
489-
break;
490-
default:
491-
throw new Error('method_not_supported_multipart');
494+
let dict = null;
495+
if (opts.body) {
496+
dict = NSJSONSerialization.JSONObjectWithDataOptionsError(NSString.stringWithString(JSON.stringify(opts.body)).dataUsingEncoding(NSUTF8StringEncoding), 0 as any);
497+
} else if (typeof opts.content === 'string') {
498+
dict = NSJSONSerialization.JSONObjectWithDataOptionsError(NSString.stringWithString(opts.content).dataUsingEncoding(NSUTF8StringEncoding), 0 as any);
492499
}
500+
task = manager.dataTaskWithHTTPMethodURLStringParametersHeadersUploadProgressDownloadProgressSuccessFailure(opts.method, opts.url, dict, headers, progress, progress, success, failure);
501+
// switch (opts.method) {
502+
// case 'GET':
503+
// task = manager.GETParametersHeadersProgressSuccessFailure(opts.url, dict, headers, progress, success, failure);
504+
// manager.requestSerializer.requestWithMethodURLStringParametersError(method, URLString, parameters)
505+
// break;
506+
// case 'POST':
507+
// task = manager.POSTParametersHeadersProgressSuccessFailure(opts.url, dict, headers, progress, success, failure);
508+
// break;
509+
// case 'PUT':
510+
// task = manager.PUTParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
511+
// break;
512+
// case 'DELETE':
513+
// task = manager.DELETEParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
514+
// break;
515+
// case 'PATCH':
516+
// task = manager.PATCHParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
517+
// break;
518+
// case 'HEAD':
519+
// task = manager.HEADParametersHeadersSuccessFailure(opts.url, dict, headers, success, failure);
520+
// break;
521+
// default:
522+
// throw new Error('method_not_supported_multipart');
523+
// }
493524
}
494525
if (task && tag) {
495526
runningRequests[tag] = task;

tools

0 commit comments

Comments
 (0)