Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2021-02-07 00:38:18 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2021-02-07 00:38:18 +0300
commit261af06e1a8fd75ff50da240824f4bba2fe88c69 (patch)
treed3b9cc07f19fd6e8ad4e02c755c5274c7ee96ad2
parent87ad8b9986cbb4ca03f6c336ee623545174a74d1 (diff)
Encode uri components
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
-rw-r--r--package-lock.json130
-rw-r--r--package.json4
-rw-r--r--src/Classes/SimpleApi.js20
3 files changed, 108 insertions, 46 deletions
diff --git a/package-lock.json b/package-lock.json
index 2c93714..a985b79 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,45 +1,93 @@
{
- "name": "passwords-client",
- "version": "0.0.11",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
+ "name": "passwords-client",
+ "version": "0.0.11",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "version": "0.0.11",
+ "license": "ISC",
+ "dependencies": {
+ "eventemitter3": "^3.1.2",
+ "libsodium-wrappers": "^0.7.8",
+ "url-parse": "^1.4.7"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
+ },
+ "node_modules/libsodium": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz",
+ "integrity": "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A=="
+ },
+ "node_modules/libsodium-wrappers": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz",
+ "integrity": "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==",
+ "dependencies": {
+ "libsodium": "^0.7.0"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
+ "node_modules/url-parse": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+ "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ }
},
- "libsodium": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.8.tgz",
- "integrity": "sha512-/Qc+APf0jbeWSaeEruH0L1/tbbT+sbf884ZL0/zV/0JXaDPBzYkKbyb/wmxMHgAHzm3t6gqe7bOOXAVwfqVikQ=="
- },
- "libsodium-wrappers": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.8.tgz",
- "integrity": "sha512-PDhPWXBqd/SaqAFUBgH2Ux7b3VEEJgyD6BQB+VdNFJb9PbExGr/T/myc/MBoSvl8qLzfm0W0IVByOQS5L1MrCg==",
- "requires": {
- "libsodium": "0.7.8"
- }
- },
- "querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
- },
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
- },
- "url-parse": {
- "version": "1.4.7",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
- "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
- "requires": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
+ "dependencies": {
+ "eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
+ },
+ "libsodium": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz",
+ "integrity": "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A=="
+ },
+ "libsodium-wrappers": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz",
+ "integrity": "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==",
+ "requires": {
+ "libsodium": "^0.7.0"
+ }
+ },
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
+ "url-parse": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+ "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ }
}
- }
}
diff --git a/package.json b/package.json
index 8020b67..71b868c 100644
--- a/package.json
+++ b/package.json
@@ -16,8 +16,8 @@
"url": "https://git.mdns.eu/nextcloud/passwords-client.git"
},
"dependencies": {
- "url-parse": "^1.4.7",
"eventemitter3": "^3.1.2",
- "libsodium-wrappers": "^0.7.8"
+ "libsodium-wrappers": "^0.7.8",
+ "url-parse": "^1.4.7"
}
}
diff --git a/src/Classes/SimpleApi.js b/src/Classes/SimpleApi.js
index 37361da..51e14e3 100644
--- a/src/Classes/SimpleApi.js
+++ b/src/Classes/SimpleApi.js
@@ -550,6 +550,7 @@ export default class SimpleApi {
* @returns {Promise}
*/
getAvatar(user, size = 32) {
+ user = encodeURIComponent(user);
return this._sendRequest(['service.avatar', {user, size}], null, 'GET', 'image/png');
}
@@ -561,6 +562,7 @@ export default class SimpleApi {
* @returns {*}
*/
getAvatarUrl(user, size = 32) {
+ user = encodeURIComponent(user);
return this._config.apiUrl + this.processUrl(this._paths['service.avatar'], {user, size});
}
@@ -573,6 +575,7 @@ export default class SimpleApi {
*/
getFavicon(domain, size = 32) {
if(domain === null || domain.length === 0) domain = 'default';
+ domain = encodeURIComponent(domain);
return this._sendRequest(['service.favicon', {domain, size}], null, 'GET', 'image/png');
}
@@ -585,6 +588,7 @@ export default class SimpleApi {
*/
getFaviconUrl(domain, size = 32) {
if(domain === null || domain.length === 0) domain = 'default';
+ domain = encodeURIComponent(domain);
return this._config.apiUrl + this.processUrl(this._paths['service.favicon'], {domain, size});
}
@@ -599,6 +603,7 @@ export default class SimpleApi {
*/
getPreview(domain, view = 'desktop', width = '640', height = '360...') {
if(domain === null || domain.length === 0) domain = 'default';
+ domain = encodeURIComponent(domain);
return this._sendRequest(
['service.preview', {domain, view, width, height}],
null,
@@ -618,6 +623,7 @@ export default class SimpleApi {
*/
getPreviewUrl(domain, view = 'desktop', width = '640', height = '360...') {
if(domain === null || domain.length === 0) domain = 'default';
+ domain = encodeURIComponent(domain);
return this._config.apiUrl + this.processUrl(
this._paths['service.preview'],
{domain, view, width, height}
@@ -738,13 +744,14 @@ export default class SimpleApi {
* @param data
* @param method
* @param dataType
+ * @param requestOptions
* @returns {Promise}
* @private
*/
- async _sendRequest(path, data = null, method = null, dataType = 'application/json') {
+ async _sendRequest(path, data = null, method = null, dataType = 'application/json', requestOptions = {}) {
if(!this._enabled) throw new Error('API not authorized');
let url = this._getRequestUrl(path),
- options = this._getRequestOptions(method, data, dataType),
+ options = this._getRequestOptions(method, data, dataType, requestOptions),
response = await this._executeRequest(url, options),
contentType = response.headers.get('content-type');
@@ -766,10 +773,11 @@ export default class SimpleApi {
* @param method
* @param data
* @param dataType
+ * @param requestOptions
* @returns {{method: *, headers: Headers, credentials: string}}
* @private
*/
- _getRequestOptions(method, data, dataType) {
+ _getRequestOptions(method, data, dataType, requestOptions) {
if(method === null || method === 'GET') method = data === null ? 'GET':'POST';
let headers = new Headers();
@@ -785,6 +793,12 @@ export default class SimpleApi {
options.body = JSON.stringify(data);
}
+ for(let key in requestOptions) {
+ if(!options.hasOwnProperty(key) && requestOptions.hasOwnProperty(key)) {
+ options[key] = requestOptions[key];
+ }
+ }
+
return options;
}