@nativescript/canvas-polyfill 1.0.13-v6 → 1.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOM/CharacterData.js +5 -10
- package/DOM/CharacterData.js.map +1 -1
- package/DOM/Document.d.ts +7 -5
- package/DOM/Document.js +55 -59
- package/DOM/Document.js.map +1 -1
- package/DOM/Element.d.ts +21 -19
- package/DOM/Element.js +64 -137
- package/DOM/Element.js.map +1 -1
- package/DOM/HTMLCanvasElement.d.ts +7 -1
- package/DOM/HTMLCanvasElement.js +35 -11
- package/DOM/HTMLCanvasElement.js.map +1 -1
- package/DOM/HTMLImageElement.d.ts +6 -3
- package/DOM/HTMLImageElement.js +113 -140
- package/DOM/HTMLImageElement.js.map +1 -1
- package/DOM/HTMLVideoElement.d.ts +14 -7
- package/DOM/HTMLVideoElement.js +81 -111
- package/DOM/HTMLVideoElement.js.map +1 -1
- package/DOM/Node.d.ts +7 -1
- package/DOM/Node.js +57 -42
- package/DOM/Node.js.map +1 -1
- package/DOM/Text.js +5 -10
- package/DOM/Text.js.map +1 -1
- package/DOM/XMLDocument.js +3 -11
- package/DOM/XMLDocument.js.map +1 -1
- package/DOM/svg/SVGCircleElement.d.ts +13 -0
- package/DOM/svg/SVGCircleElement.js +39 -0
- package/DOM/svg/SVGCircleElement.js.map +1 -0
- package/DOM/svg/SVGElement.d.ts +17 -0
- package/DOM/svg/SVGElement.js +59 -0
- package/DOM/svg/SVGElement.js.map +1 -0
- package/DOM/svg/SVGGGElement.d.ts +13 -0
- package/DOM/svg/SVGGGElement.js +39 -0
- package/DOM/svg/SVGGGElement.js.map +1 -0
- package/DOM/svg/SVGPathElement.d.ts +13 -0
- package/DOM/svg/SVGPathElement.js +39 -0
- package/DOM/svg/SVGPathElement.js.map +1 -0
- package/DOM/svg/SVGRectElement.d.ts +13 -0
- package/DOM/svg/SVGRectElement.js +39 -0
- package/DOM/svg/SVGRectElement.js.map +1 -0
- package/DOM/svg/index.d.ts +5 -0
- package/DOM/svg/index.js +6 -0
- package/DOM/svg/index.js.map +1 -0
- package/URL.android.d.ts +38 -0
- package/URL.android.js +266 -0
- package/URL.android.js.map +1 -0
- package/URL.ios.d.ts +37 -0
- package/URL.ios.js +209 -0
- package/URL.ios.js.map +1 -0
- package/async/async.js +3 -8
- package/async/async.js.map +1 -1
- package/async/file/file.android.js +13 -21
- package/async/file/file.android.js.map +1 -1
- package/async/file/file.ios.js +21 -29
- package/async/file/file.ios.js.map +1 -1
- package/async/http/http-request-common.d.ts +5 -5
- package/async/http/http-request-common.js +36 -67
- package/async/http/http-request-common.js.map +1 -1
- package/async/http/http.android.js +194 -201
- package/async/http/http.android.js.map +1 -1
- package/async/http/http.ios.js +135 -142
- package/async/http/http.ios.js.map +1 -1
- package/async/xhr/TNSXMLHttpRequest.d.ts +17 -15
- package/async/xhr/TNSXMLHttpRequest.js +527 -585
- package/async/xhr/TNSXMLHttpRequest.js.map +1 -1
- package/index.js +45 -21
- package/index.js.map +1 -1
- package/package.json +6 -8
- package/performance.d.ts +0 -1
- package/performance.js +12 -15
- package/performance.js.map +1 -1
- package/platforms/android/include.gradle +2 -2
- package/resize.js +8 -10
- package/resize.js.map +1 -1
- package/window.d.ts +1 -1
- package/window.js +57 -85
- package/window.js.map +1 -1
- package/URL.d.ts +0 -5
- package/URL.js +0 -46
- package/URL.js.map +0 -1
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
var types_1 = require("@nativescript/core/utils/types");
|
|
8
|
-
var HttpResponseEncoding;
|
|
1
|
+
import { fileNameFromPath, HttpError, isImageUrl, SaveImageStorageKey, TNSHttpSettings } from './http-request-common';
|
|
2
|
+
import { NetworkAgent } from '@nativescript/core/debugger';
|
|
3
|
+
import { File, Folder, knownFolders, path, ApplicationSettings } from '@nativescript/core';
|
|
4
|
+
import { FileManager } from '../file/file';
|
|
5
|
+
import { isString, isObject, isNullOrUndefined } from '@nativescript/core/utils/types';
|
|
6
|
+
export var HttpResponseEncoding;
|
|
9
7
|
(function (HttpResponseEncoding) {
|
|
10
8
|
HttpResponseEncoding[HttpResponseEncoding["UTF8"] = 0] = "UTF8";
|
|
11
9
|
HttpResponseEncoding[HttpResponseEncoding["GBK"] = 1] = "GBK";
|
|
12
|
-
})(HttpResponseEncoding
|
|
13
|
-
|
|
10
|
+
})(HttpResponseEncoding || (HttpResponseEncoding = {}));
|
|
11
|
+
const statuses = {
|
|
14
12
|
100: 'Continue',
|
|
15
13
|
101: 'Switching Protocols',
|
|
16
14
|
200: 'OK',
|
|
@@ -53,22 +51,22 @@ var statuses = {
|
|
|
53
51
|
505: 'HTTP Version Not Supported'
|
|
54
52
|
};
|
|
55
53
|
function parseJSON(source) {
|
|
56
|
-
|
|
54
|
+
const src = source.trim();
|
|
57
55
|
if (src.lastIndexOf(')') === src.length - 1) {
|
|
58
56
|
return JSON.parse(src.substring(src.indexOf('(') + 1, src.lastIndexOf(')')));
|
|
59
57
|
}
|
|
60
58
|
return JSON.parse(src);
|
|
61
59
|
}
|
|
62
|
-
|
|
60
|
+
const textTypes = [
|
|
63
61
|
'text/plain',
|
|
64
62
|
'application/xml',
|
|
65
63
|
'application/rss+xml',
|
|
66
64
|
'text/html',
|
|
67
65
|
'text/xml'
|
|
68
66
|
];
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
for (
|
|
67
|
+
const isTextContentType = (contentType) => {
|
|
68
|
+
let result = false;
|
|
69
|
+
for (let i = 0; i < textTypes.length; i++) {
|
|
72
70
|
if (contentType.toLowerCase().indexOf(textTypes[i]) >= 0) {
|
|
73
71
|
result = true;
|
|
74
72
|
break;
|
|
@@ -76,27 +74,27 @@ var isTextContentType = function (contentType) {
|
|
|
76
74
|
}
|
|
77
75
|
return result;
|
|
78
76
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
const requestCallbacks = new Map();
|
|
78
|
+
let requestIdCounter = 0;
|
|
79
|
+
export class Http {
|
|
80
|
+
constructor() {
|
|
83
81
|
}
|
|
84
|
-
|
|
85
|
-
if (!
|
|
82
|
+
static buildJavaOptions(options) {
|
|
83
|
+
if (!isString(options.url)) {
|
|
86
84
|
throw new Error('Http request must provide a valid url.');
|
|
87
85
|
}
|
|
88
|
-
|
|
86
|
+
let javaOptions = new com.github.triniwiz.async.Async2.Http.RequestOptions();
|
|
89
87
|
javaOptions.url = options.url;
|
|
90
|
-
|
|
91
|
-
if (
|
|
88
|
+
let method;
|
|
89
|
+
if (isString(typeof options.method)) {
|
|
92
90
|
javaOptions.method = options.method;
|
|
93
91
|
method = options.method.toLowerCase();
|
|
94
92
|
}
|
|
95
93
|
if ((method && method === 'post') || method === 'put') {
|
|
96
|
-
if (
|
|
94
|
+
if (isString(options.content)) {
|
|
97
95
|
javaOptions.content = new java.lang.String(options.content);
|
|
98
96
|
}
|
|
99
|
-
else if (
|
|
97
|
+
else if (isObject(options.content)) {
|
|
100
98
|
javaOptions.content = serialize(options.content);
|
|
101
99
|
}
|
|
102
100
|
}
|
|
@@ -104,27 +102,27 @@ var Http = /** @class */ (function () {
|
|
|
104
102
|
javaOptions.timeout = options.timeout;
|
|
105
103
|
}
|
|
106
104
|
if (options.headers) {
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
const arrayList = new java.util.ArrayList();
|
|
106
|
+
const pair = com.github.triniwiz.async.Async2.Http.KeyValuePair;
|
|
109
107
|
if (options.headers instanceof Map) {
|
|
110
|
-
options.headers.forEach(
|
|
111
|
-
|
|
108
|
+
options.headers.forEach((value, key) => {
|
|
109
|
+
arrayList.add(new pair(key, value + ''));
|
|
112
110
|
});
|
|
113
111
|
}
|
|
114
112
|
else {
|
|
115
|
-
for (
|
|
116
|
-
|
|
113
|
+
for (let key in options.headers) {
|
|
114
|
+
arrayList.add(new pair(key, options.headers[key] + ''));
|
|
117
115
|
}
|
|
118
116
|
}
|
|
119
|
-
javaOptions.headers =
|
|
117
|
+
javaOptions.headers = arrayList;
|
|
120
118
|
}
|
|
121
119
|
return javaOptions;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (!
|
|
120
|
+
}
|
|
121
|
+
static buildJavaDownloadOptions(options) {
|
|
122
|
+
if (!isString(options.url)) {
|
|
125
123
|
throw new Error('Http request must provide a valid url.');
|
|
126
124
|
}
|
|
127
|
-
|
|
125
|
+
const javaOptions = new com.github.triniwiz.async.Async2.Http.DownloadRequestOptions();
|
|
128
126
|
javaOptions.url = options.url;
|
|
129
127
|
if (typeof options.timeout === 'number') {
|
|
130
128
|
javaOptions.timeout = options.timeout;
|
|
@@ -134,54 +132,54 @@ var Http = /** @class */ (function () {
|
|
|
134
132
|
}
|
|
135
133
|
else {
|
|
136
134
|
// creates directory
|
|
137
|
-
|
|
138
|
-
javaOptions.filePath =
|
|
135
|
+
Folder.fromPath(path.join(knownFolders.temp().path, 'async_http'));
|
|
136
|
+
javaOptions.filePath = path.join(knownFolders.temp().path, 'async_http', java.util.UUID.randomUUID().toString());
|
|
139
137
|
}
|
|
140
138
|
if (options.headers) {
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
const arrayList = new java.util.ArrayList();
|
|
140
|
+
const pair = com.github.triniwiz.async.Async2.Http.KeyValuePair;
|
|
143
141
|
if (options.headers instanceof Map) {
|
|
144
|
-
options.headers.forEach(
|
|
145
|
-
|
|
142
|
+
options.headers.forEach((value, key) => {
|
|
143
|
+
arrayList.add(new pair(key, value + ''));
|
|
146
144
|
});
|
|
147
145
|
}
|
|
148
146
|
else {
|
|
149
|
-
for (
|
|
150
|
-
|
|
147
|
+
for (let key in options.headers) {
|
|
148
|
+
arrayList.add(new pair(key, options.headers[key] + ''));
|
|
151
149
|
}
|
|
152
150
|
}
|
|
153
|
-
javaOptions.headers =
|
|
151
|
+
javaOptions.headers = arrayList;
|
|
154
152
|
}
|
|
155
153
|
return javaOptions;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
}
|
|
155
|
+
request(options) {
|
|
156
|
+
const headers = {};
|
|
157
|
+
let statusCode = 0;
|
|
158
|
+
let id;
|
|
159
|
+
const counter = requestIdCounter;
|
|
160
|
+
const request = new Promise((resolve, reject) => {
|
|
163
161
|
try {
|
|
164
162
|
// initialize the options
|
|
165
|
-
|
|
166
|
-
if (
|
|
163
|
+
const javaOptions = Http.buildJavaOptions(options);
|
|
164
|
+
if (TNSHttpSettings.debug) {
|
|
167
165
|
// @ts-ignore
|
|
168
166
|
if (global.__inspector && global.__inspector.isConnected) {
|
|
169
|
-
|
|
167
|
+
NetworkAgent.requestWillBeSent(requestIdCounter, options);
|
|
170
168
|
}
|
|
171
169
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
onCancel
|
|
170
|
+
const makeRemoteRequest = () => {
|
|
171
|
+
const callback = new com.github.triniwiz.async.Async2.Http.Callback({
|
|
172
|
+
onCancel(param) {
|
|
175
173
|
reject({
|
|
176
|
-
type:
|
|
174
|
+
type: HttpError.Cancelled,
|
|
177
175
|
result: param
|
|
178
176
|
});
|
|
179
177
|
requestCallbacks.delete(id);
|
|
180
178
|
},
|
|
181
|
-
onComplete
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
179
|
+
onComplete(result) {
|
|
180
|
+
let content;
|
|
181
|
+
let responseText;
|
|
182
|
+
let _isString = false;
|
|
185
183
|
if (result.content instanceof org.json.JSONObject || result.content instanceof org.json.JSONArray) {
|
|
186
184
|
content = deserialize(result.content);
|
|
187
185
|
responseText = result.contentText;
|
|
@@ -192,36 +190,35 @@ var Http = /** @class */ (function () {
|
|
|
192
190
|
responseText = result.contentText;
|
|
193
191
|
}
|
|
194
192
|
if (result && result.headers) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
for (
|
|
193
|
+
const length = result.headers.size();
|
|
194
|
+
let pair;
|
|
195
|
+
for (let i = 0; i < length; i++) {
|
|
198
196
|
pair = result.headers.get(i);
|
|
199
197
|
addHeader(headers, pair.key, pair.value);
|
|
200
198
|
}
|
|
201
199
|
}
|
|
202
200
|
// send response data (for requestId) to network debugger
|
|
203
|
-
|
|
204
|
-
if (
|
|
201
|
+
let contentType = headers['Content-Type'];
|
|
202
|
+
if (isNullOrUndefined(contentType)) {
|
|
205
203
|
contentType = headers['content-type'];
|
|
206
204
|
}
|
|
207
|
-
|
|
208
|
-
if (
|
|
205
|
+
let acceptHeader;
|
|
206
|
+
if (isNullOrUndefined(contentType)) {
|
|
209
207
|
acceptHeader = headers['Accept'];
|
|
210
|
-
if (
|
|
208
|
+
if (isNullOrUndefined(acceptHeader)) {
|
|
211
209
|
acceptHeader = headers['accept'];
|
|
212
210
|
}
|
|
213
211
|
}
|
|
214
212
|
else {
|
|
215
213
|
acceptHeader = contentType;
|
|
216
214
|
}
|
|
217
|
-
|
|
218
|
-
if (!
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
for (
|
|
224
|
-
var value = acceptValues_1[_i];
|
|
215
|
+
let returnType = 'text/plain';
|
|
216
|
+
if (!isNullOrUndefined(acceptHeader) && isString(acceptHeader)) {
|
|
217
|
+
let acceptValues = acceptHeader.split(',');
|
|
218
|
+
let quality = [];
|
|
219
|
+
let defaultQuality = [];
|
|
220
|
+
let customQuality = [];
|
|
221
|
+
for (let value of acceptValues) {
|
|
225
222
|
if (value.indexOf(';q=') > -1) {
|
|
226
223
|
customQuality.push(value);
|
|
227
224
|
}
|
|
@@ -229,37 +226,37 @@ var Http = /** @class */ (function () {
|
|
|
229
226
|
defaultQuality.push(value);
|
|
230
227
|
}
|
|
231
228
|
}
|
|
232
|
-
customQuality = customQuality.sort(
|
|
233
|
-
|
|
234
|
-
|
|
229
|
+
customQuality = customQuality.sort((a, b) => {
|
|
230
|
+
const a_quality = parseFloat(a.substring(a.indexOf(';q=')).replace(';q=', ''));
|
|
231
|
+
const b_quality = parseFloat(b.substring(b.indexOf(';q=')).replace(';q=', ''));
|
|
235
232
|
return (b_quality - a_quality);
|
|
236
233
|
});
|
|
237
|
-
quality.push
|
|
238
|
-
quality.push
|
|
234
|
+
quality.push(...defaultQuality);
|
|
235
|
+
quality.push(...customQuality);
|
|
239
236
|
returnType = quality[0];
|
|
240
237
|
}
|
|
241
238
|
result['statusCode'] = statusCode;
|
|
242
|
-
if (
|
|
239
|
+
if (TNSHttpSettings.debug) {
|
|
243
240
|
// send response data (for requestId) to network debugger
|
|
244
241
|
// @ts-ignore
|
|
245
242
|
if (global.__inspector && global.__inspector.isConnected) {
|
|
246
|
-
|
|
243
|
+
NetworkAgent.responseReceived(counter, {
|
|
247
244
|
url: result.url,
|
|
248
|
-
statusCode
|
|
249
|
-
headers
|
|
250
|
-
responseAsString:
|
|
245
|
+
statusCode,
|
|
246
|
+
headers,
|
|
247
|
+
responseAsString: isString ? (result.contentText ? result.contentText : result.content.toString()) : null,
|
|
251
248
|
responseAsImage: null // TODO needs base64 Image
|
|
252
249
|
}, headers);
|
|
253
250
|
}
|
|
254
251
|
}
|
|
255
|
-
if (isTextContentType(returnType) &&
|
|
252
|
+
if (isTextContentType(returnType) && isNullOrUndefined(responseText)) {
|
|
256
253
|
responseText = result.contentText;
|
|
257
254
|
}
|
|
258
|
-
if (
|
|
255
|
+
if (TNSHttpSettings.saveImage && TNSHttpSettings.currentlySavedImages && TNSHttpSettings.currentlySavedImages[this._url]) {
|
|
259
256
|
// ensure saved to disk
|
|
260
|
-
if (
|
|
261
|
-
|
|
262
|
-
if (
|
|
257
|
+
if (TNSHttpSettings.currentlySavedImages[this._url].localPath) {
|
|
258
|
+
FileManager.writeFile(content, TNSHttpSettings.currentlySavedImages[this._url].localPath, function (error, result) {
|
|
259
|
+
if (TNSHttpSettings.debug) {
|
|
263
260
|
console.log('http image save:', error ? error : result);
|
|
264
261
|
}
|
|
265
262
|
});
|
|
@@ -267,25 +264,25 @@ var Http = /** @class */ (function () {
|
|
|
267
264
|
}
|
|
268
265
|
resolve({
|
|
269
266
|
url: result.url,
|
|
270
|
-
content
|
|
271
|
-
responseText
|
|
267
|
+
content,
|
|
268
|
+
responseText,
|
|
272
269
|
statusCode: statusCode,
|
|
273
270
|
headers: headers
|
|
274
271
|
});
|
|
275
272
|
requestCallbacks.delete(id);
|
|
276
273
|
},
|
|
277
|
-
onError
|
|
274
|
+
onError(param0, param1) {
|
|
278
275
|
reject({
|
|
279
|
-
type:
|
|
276
|
+
type: HttpError.Error,
|
|
280
277
|
message: param0
|
|
281
278
|
});
|
|
282
279
|
requestCallbacks.delete(id);
|
|
283
280
|
},
|
|
284
|
-
onHeaders
|
|
281
|
+
onHeaders(jHeaders, status) {
|
|
285
282
|
statusCode = status;
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
for (
|
|
283
|
+
const length = jHeaders.size();
|
|
284
|
+
let pair;
|
|
285
|
+
for (let i = 0; i < length; i++) {
|
|
289
286
|
pair = jHeaders.get(i);
|
|
290
287
|
addHeader(headers, pair.key, pair.value);
|
|
291
288
|
}
|
|
@@ -293,53 +290,53 @@ var Http = /** @class */ (function () {
|
|
|
293
290
|
options.onHeaders(headers, statusCode);
|
|
294
291
|
}
|
|
295
292
|
requestCallbacks.delete(id);
|
|
296
|
-
}, onLoading
|
|
293
|
+
}, onLoading() {
|
|
297
294
|
options.onLoading();
|
|
298
295
|
requestCallbacks.delete(id);
|
|
299
|
-
}, onProgress
|
|
296
|
+
}, onProgress(lengthComputable, loaded, total) {
|
|
300
297
|
if (options.onProgress) {
|
|
301
298
|
options.onProgress({
|
|
302
|
-
lengthComputable
|
|
303
|
-
loaded
|
|
304
|
-
total
|
|
299
|
+
lengthComputable,
|
|
300
|
+
loaded,
|
|
301
|
+
total
|
|
305
302
|
});
|
|
306
303
|
}
|
|
307
304
|
requestCallbacks.delete(id);
|
|
308
305
|
},
|
|
309
|
-
onTimeout
|
|
306
|
+
onTimeout() {
|
|
310
307
|
reject({
|
|
311
|
-
type:
|
|
308
|
+
type: HttpError.Timeout
|
|
312
309
|
});
|
|
313
310
|
requestCallbacks.delete(id);
|
|
314
311
|
}
|
|
315
312
|
});
|
|
316
|
-
id = com.github.triniwiz.async.Async2.Http.makeRequest(
|
|
313
|
+
id = com.github.triniwiz.async.Async2.Http.makeRequest(javaOptions, callback);
|
|
317
314
|
requestCallbacks.set(id, callback);
|
|
318
315
|
};
|
|
319
|
-
if (
|
|
316
|
+
if (TNSHttpSettings.saveImage && isImageUrl(options.url)) {
|
|
320
317
|
// handle saved images to disk
|
|
321
|
-
if (!
|
|
322
|
-
|
|
318
|
+
if (!TNSHttpSettings.currentlySavedImages) {
|
|
319
|
+
const stored = ApplicationSettings.getString(SaveImageStorageKey);
|
|
323
320
|
if (stored) {
|
|
324
321
|
try {
|
|
325
|
-
|
|
322
|
+
TNSHttpSettings.currentlySavedImages = JSON.parse(stored);
|
|
326
323
|
}
|
|
327
324
|
catch (err) {
|
|
328
|
-
|
|
325
|
+
TNSHttpSettings.currentlySavedImages = {};
|
|
329
326
|
}
|
|
330
327
|
}
|
|
331
328
|
else {
|
|
332
|
-
|
|
329
|
+
TNSHttpSettings.currentlySavedImages = {};
|
|
333
330
|
}
|
|
334
331
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
if (imageSetting && imageSetting.localPath &&
|
|
332
|
+
const imageSetting = TNSHttpSettings.currentlySavedImages[options.url];
|
|
333
|
+
const requests = imageSetting ? imageSetting.requests : 0;
|
|
334
|
+
let localPath;
|
|
335
|
+
if (imageSetting && imageSetting.localPath && File.exists(imageSetting.localPath)) {
|
|
339
336
|
// previously saved to disk
|
|
340
|
-
|
|
337
|
+
FileManager.readFile(imageSetting.localPath, null, (error, file) => {
|
|
341
338
|
if (error) {
|
|
342
|
-
if (
|
|
339
|
+
if (TNSHttpSettings.debug) {
|
|
343
340
|
console.log('http image load error:', error);
|
|
344
341
|
}
|
|
345
342
|
}
|
|
@@ -354,19 +351,19 @@ var Http = /** @class */ (function () {
|
|
|
354
351
|
});
|
|
355
352
|
});
|
|
356
353
|
}
|
|
357
|
-
else if (requests >=
|
|
354
|
+
else if (requests >= TNSHttpSettings.saveImage.numberOfRequests) {
|
|
358
355
|
// setup to write to disk when response finishes
|
|
359
|
-
|
|
356
|
+
let filename = fileNameFromPath(options.url);
|
|
360
357
|
if (filename.indexOf('?')) {
|
|
361
358
|
// strip any params if were any
|
|
362
359
|
filename = filename.split('?')[0];
|
|
363
360
|
}
|
|
364
|
-
localPath =
|
|
361
|
+
localPath = path.join(knownFolders.documents().path, filename);
|
|
365
362
|
makeRemoteRequest();
|
|
366
363
|
}
|
|
367
364
|
// save settings
|
|
368
|
-
|
|
369
|
-
|
|
365
|
+
TNSHttpSettings.currentlySavedImages[options.url] = Object.assign(Object.assign({}, (imageSetting || {})), { date: Date.now(), requests: requests + 1, localPath });
|
|
366
|
+
ApplicationSettings.setString(SaveImageStorageKey, JSON.stringify(TNSHttpSettings.currentlySavedImages));
|
|
370
367
|
}
|
|
371
368
|
else {
|
|
372
369
|
makeRemoteRequest();
|
|
@@ -375,7 +372,7 @@ var Http = /** @class */ (function () {
|
|
|
375
372
|
}
|
|
376
373
|
catch (ex) {
|
|
377
374
|
reject({
|
|
378
|
-
type:
|
|
375
|
+
type: HttpError.Error,
|
|
379
376
|
message: ex.message
|
|
380
377
|
});
|
|
381
378
|
}
|
|
@@ -384,63 +381,62 @@ var Http = /** @class */ (function () {
|
|
|
384
381
|
com.github.triniwiz.async.Async2.Http.cancelRequest(id);
|
|
385
382
|
};
|
|
386
383
|
return request;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
384
|
+
}
|
|
385
|
+
static getFile(options) {
|
|
386
|
+
const headers = {};
|
|
387
|
+
let statusCode = 0;
|
|
388
|
+
let id;
|
|
389
|
+
const counter = requestIdCounter;
|
|
390
|
+
const request = new Promise((resolve, reject) => {
|
|
394
391
|
try {
|
|
395
392
|
// initialize the options
|
|
396
|
-
|
|
397
|
-
if (
|
|
393
|
+
const javaOptions = Http.buildJavaDownloadOptions(options);
|
|
394
|
+
if (TNSHttpSettings.debug) {
|
|
398
395
|
// @ts-ignore
|
|
399
396
|
if (global.__inspector && global.__inspector.isConnected) {
|
|
400
|
-
|
|
397
|
+
NetworkAgent.requestWillBeSent(requestIdCounter, options);
|
|
401
398
|
}
|
|
402
399
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
onCancel
|
|
400
|
+
const makeRemoteRequest = () => {
|
|
401
|
+
const callback = new com.github.triniwiz.async.Async2.Http.Callback({
|
|
402
|
+
onCancel(param) {
|
|
406
403
|
reject({
|
|
407
|
-
type:
|
|
404
|
+
type: HttpError.Cancelled,
|
|
408
405
|
result: param
|
|
409
406
|
});
|
|
410
407
|
requestCallbacks.delete(id);
|
|
411
408
|
},
|
|
412
|
-
onComplete
|
|
409
|
+
onComplete(result) {
|
|
413
410
|
if (result && result.headers) {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
for (
|
|
411
|
+
const length = result.headers.size();
|
|
412
|
+
let pair;
|
|
413
|
+
for (let i = 0; i < length; i++) {
|
|
417
414
|
pair = result.headers.get(i);
|
|
418
415
|
addHeader(headers, pair.key, pair.value);
|
|
419
416
|
}
|
|
420
417
|
}
|
|
421
418
|
// send response data (for requestId) to network debugger
|
|
422
|
-
|
|
423
|
-
if (
|
|
419
|
+
let contentType = headers['Content-Type'];
|
|
420
|
+
if (isNullOrUndefined(contentType)) {
|
|
424
421
|
contentType = headers['content-type'];
|
|
425
422
|
}
|
|
426
|
-
|
|
427
|
-
if (
|
|
423
|
+
let acceptHeader;
|
|
424
|
+
if (isNullOrUndefined(contentType)) {
|
|
428
425
|
acceptHeader = headers['Accept'];
|
|
429
|
-
if (
|
|
426
|
+
if (isNullOrUndefined(acceptHeader)) {
|
|
430
427
|
acceptHeader = headers['accept'];
|
|
431
428
|
}
|
|
432
429
|
}
|
|
433
430
|
else {
|
|
434
431
|
acceptHeader = contentType;
|
|
435
432
|
}
|
|
436
|
-
|
|
437
|
-
if (!
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
for (
|
|
443
|
-
var value = acceptValues_2[_i];
|
|
433
|
+
let returnType = 'text/plain';
|
|
434
|
+
if (!isNullOrUndefined(acceptHeader) && isString(acceptHeader)) {
|
|
435
|
+
let acceptValues = acceptHeader.split(',');
|
|
436
|
+
let quality = [];
|
|
437
|
+
let defaultQuality = [];
|
|
438
|
+
let customQuality = [];
|
|
439
|
+
for (let value of acceptValues) {
|
|
444
440
|
if (value.indexOf(';q=') > -1) {
|
|
445
441
|
customQuality.push(value);
|
|
446
442
|
}
|
|
@@ -448,25 +444,25 @@ var Http = /** @class */ (function () {
|
|
|
448
444
|
defaultQuality.push(value);
|
|
449
445
|
}
|
|
450
446
|
}
|
|
451
|
-
customQuality = customQuality.sort(
|
|
452
|
-
|
|
453
|
-
|
|
447
|
+
customQuality = customQuality.sort((a, b) => {
|
|
448
|
+
const a_quality = parseFloat(a.substring(a.indexOf(';q=')).replace(';q=', ''));
|
|
449
|
+
const b_quality = parseFloat(b.substring(b.indexOf(';q=')).replace(';q=', ''));
|
|
454
450
|
return (b_quality - a_quality);
|
|
455
451
|
});
|
|
456
|
-
quality.push
|
|
457
|
-
quality.push
|
|
452
|
+
quality.push(...defaultQuality);
|
|
453
|
+
quality.push(...customQuality);
|
|
458
454
|
returnType = quality[0];
|
|
459
455
|
}
|
|
460
456
|
result['statusCode'] = statusCode;
|
|
461
|
-
if (
|
|
457
|
+
if (TNSHttpSettings.debug) {
|
|
462
458
|
// send response data (for requestId) to network debugger
|
|
463
459
|
// @ts-ignore
|
|
464
460
|
if (global.__inspector && global.__inspector.isConnected) {
|
|
465
|
-
|
|
461
|
+
NetworkAgent.responseReceived(counter, {
|
|
466
462
|
url: result.url,
|
|
467
|
-
statusCode
|
|
468
|
-
headers
|
|
469
|
-
responseAsString:
|
|
463
|
+
statusCode,
|
|
464
|
+
headers,
|
|
465
|
+
responseAsString: isString ? (result.contentText ? result.contentText : result.content.toString()) : null,
|
|
470
466
|
responseAsImage: null // TODO needs base64 Image
|
|
471
467
|
}, headers);
|
|
472
468
|
}
|
|
@@ -474,18 +470,18 @@ var Http = /** @class */ (function () {
|
|
|
474
470
|
resolve(result.filePath);
|
|
475
471
|
requestCallbacks.delete(id);
|
|
476
472
|
},
|
|
477
|
-
onError
|
|
473
|
+
onError(param0, param1) {
|
|
478
474
|
reject({
|
|
479
|
-
type:
|
|
475
|
+
type: HttpError.Error,
|
|
480
476
|
message: param0
|
|
481
477
|
});
|
|
482
478
|
requestCallbacks.delete(id);
|
|
483
479
|
},
|
|
484
|
-
onHeaders
|
|
480
|
+
onHeaders(jHeaders, status) {
|
|
485
481
|
statusCode = status;
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
for (
|
|
482
|
+
const length = jHeaders.size();
|
|
483
|
+
let pair;
|
|
484
|
+
for (let i = 0; i < length; i++) {
|
|
489
485
|
pair = jHeaders.get(i);
|
|
490
486
|
addHeader(headers, pair.key, pair.value);
|
|
491
487
|
}
|
|
@@ -493,27 +489,27 @@ var Http = /** @class */ (function () {
|
|
|
493
489
|
options.onHeaders(headers, statusCode);
|
|
494
490
|
}
|
|
495
491
|
requestCallbacks.delete(id);
|
|
496
|
-
}, onLoading
|
|
492
|
+
}, onLoading() {
|
|
497
493
|
options.onLoading();
|
|
498
494
|
requestCallbacks.delete(id);
|
|
499
|
-
}, onProgress
|
|
495
|
+
}, onProgress(lengthComputable, loaded, total) {
|
|
500
496
|
if (options.onProgress) {
|
|
501
497
|
options.onProgress({
|
|
502
|
-
lengthComputable
|
|
503
|
-
loaded
|
|
504
|
-
total
|
|
498
|
+
lengthComputable,
|
|
499
|
+
loaded,
|
|
500
|
+
total
|
|
505
501
|
});
|
|
506
502
|
}
|
|
507
503
|
requestCallbacks.delete(id);
|
|
508
504
|
},
|
|
509
|
-
onTimeout
|
|
505
|
+
onTimeout() {
|
|
510
506
|
reject({
|
|
511
|
-
type:
|
|
507
|
+
type: HttpError.Timeout
|
|
512
508
|
});
|
|
513
509
|
requestCallbacks.delete(id);
|
|
514
510
|
}
|
|
515
511
|
});
|
|
516
|
-
id = com.github.triniwiz.async.Async2.Http.getFileRequest(
|
|
512
|
+
id = com.github.triniwiz.async.Async2.Http.getFileRequest(javaOptions, callback);
|
|
517
513
|
requestCallbacks.set(id, callback);
|
|
518
514
|
};
|
|
519
515
|
makeRemoteRequest();
|
|
@@ -521,7 +517,7 @@ var Http = /** @class */ (function () {
|
|
|
521
517
|
}
|
|
522
518
|
catch (ex) {
|
|
523
519
|
reject({
|
|
524
|
-
type:
|
|
520
|
+
type: HttpError.Error,
|
|
525
521
|
message: ex.message
|
|
526
522
|
});
|
|
527
523
|
}
|
|
@@ -530,12 +526,10 @@ var Http = /** @class */ (function () {
|
|
|
530
526
|
com.github.triniwiz.async.Async2.Http.cancelRequest(id);
|
|
531
527
|
};
|
|
532
528
|
return request;
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
}());
|
|
536
|
-
exports.Http = Http;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
537
531
|
function serialize(data) {
|
|
538
|
-
|
|
532
|
+
let store;
|
|
539
533
|
switch (typeof data) {
|
|
540
534
|
case 'string':
|
|
541
535
|
case 'boolean':
|
|
@@ -551,11 +545,11 @@ function serialize(data) {
|
|
|
551
545
|
}
|
|
552
546
|
if (Array.isArray(data)) {
|
|
553
547
|
store = new org.json.JSONArray();
|
|
554
|
-
data.forEach(
|
|
548
|
+
data.forEach((item) => store.put(serialize(item)));
|
|
555
549
|
return store;
|
|
556
550
|
}
|
|
557
551
|
store = new org.json.JSONObject();
|
|
558
|
-
Object.keys(data).forEach(
|
|
552
|
+
Object.keys(data).forEach((key) => store.put(key, serialize(data[key])));
|
|
559
553
|
return store;
|
|
560
554
|
}
|
|
561
555
|
default:
|
|
@@ -563,14 +557,14 @@ function serialize(data) {
|
|
|
563
557
|
}
|
|
564
558
|
}
|
|
565
559
|
function deserialize(data) {
|
|
566
|
-
if (
|
|
560
|
+
if (isNullOrUndefined(data)) {
|
|
567
561
|
return null;
|
|
568
562
|
}
|
|
569
563
|
if (typeof data !== 'object') {
|
|
570
564
|
return data;
|
|
571
565
|
}
|
|
572
566
|
if (typeof data.getClass === 'function') {
|
|
573
|
-
|
|
567
|
+
let store;
|
|
574
568
|
switch (data.getClass().getName()) {
|
|
575
569
|
case 'java.lang.String': {
|
|
576
570
|
return String(data);
|
|
@@ -586,16 +580,16 @@ function deserialize(data) {
|
|
|
586
580
|
}
|
|
587
581
|
case 'org.json.JSONArray': {
|
|
588
582
|
store = [];
|
|
589
|
-
for (
|
|
583
|
+
for (let j = 0; j < data.length(); j++) {
|
|
590
584
|
store[j] = deserialize(data.get(j));
|
|
591
585
|
}
|
|
592
586
|
break;
|
|
593
587
|
}
|
|
594
588
|
case 'org.json.JSONObject': {
|
|
595
589
|
store = {};
|
|
596
|
-
|
|
590
|
+
let i = data.keys();
|
|
597
591
|
while (i.hasNext()) {
|
|
598
|
-
|
|
592
|
+
let key = i.next();
|
|
599
593
|
store[key] = deserialize(data.get(key));
|
|
600
594
|
}
|
|
601
595
|
break;
|
|
@@ -611,13 +605,13 @@ function deserialize(data) {
|
|
|
611
605
|
}
|
|
612
606
|
}
|
|
613
607
|
function decodeResponse(raw, encoding) {
|
|
614
|
-
|
|
608
|
+
let charsetName = 'UTF-8';
|
|
615
609
|
if (encoding === HttpResponseEncoding.GBK) {
|
|
616
610
|
charsetName = 'GBK';
|
|
617
611
|
}
|
|
618
612
|
return new java.lang.String(raw.array(), charsetName);
|
|
619
613
|
}
|
|
620
|
-
function addHeader(headers, key, value) {
|
|
614
|
+
export function addHeader(headers, key, value) {
|
|
621
615
|
if (!headers[key]) {
|
|
622
616
|
headers[key] = value;
|
|
623
617
|
}
|
|
@@ -625,10 +619,9 @@ function addHeader(headers, key, value) {
|
|
|
625
619
|
headers[key].push(value);
|
|
626
620
|
}
|
|
627
621
|
else {
|
|
628
|
-
|
|
622
|
+
const values = [headers[key]];
|
|
629
623
|
values.push(value);
|
|
630
624
|
headers[key] = values;
|
|
631
625
|
}
|
|
632
626
|
}
|
|
633
|
-
exports.addHeader = addHeader;
|
|
634
627
|
//# sourceMappingURL=http.android.js.map
|