summaryrefslogtreecommitdiff
path: root/src/web/app/common/scripts/api.js
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-02-13 07:39:54 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-02-13 07:39:54 +0900
commit96cd073bda6ecffb4e9b2489af512f05c9f8dd8c (patch)
treec5b6dbd035460297f059e8ff24a9fc620c84547c /src/web/app/common/scripts/api.js
parent[Test] :v: (diff)
downloadmisskey-96cd073bda6ecffb4e9b2489af512f05c9f8dd8c.tar.gz
misskey-96cd073bda6ecffb4e9b2489af512f05c9f8dd8c.tar.bz2
misskey-96cd073bda6ecffb4e9b2489af512f05c9f8dd8c.zip
[Client] LS to JS and some Clean up :v:
Diffstat (limited to 'src/web/app/common/scripts/api.js')
-rw-r--r--src/web/app/common/scripts/api.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/web/app/common/scripts/api.js b/src/web/app/common/scripts/api.js
new file mode 100644
index 0000000000..924d697ebc
--- /dev/null
+++ b/src/web/app/common/scripts/api.js
@@ -0,0 +1,44 @@
+/**
+ * API Request
+ */
+
+let spinner = null;
+let pending = 0;
+
+/**
+ * Send a request to API
+ * @param {string|Object} i Credential
+ * @param {string} endpoint Endpoint
+ * @param {Object} [data={}] Data
+ * @return {Promise<Object>} Response
+ */
+module.exports = (i, endpoint, data = {}) => {
+ if (++pending === 1) {
+ spinner = document.createElement('div');
+ spinner.setAttribute('id', 'wait');
+ document.body.appendChild(spinner);
+ }
+
+ // Append the credential
+ if (i != null) data.i = typeof i === 'object' ? i.token : i;
+
+ return new Promise((resolve, reject) => {
+ // Send request
+ fetch(endpoint.indexOf('://') > -1 ? endpoint : `${CONFIG.api.url}/${endpoint}`, {
+ method: 'POST',
+ body: JSON.stringify(data),
+ credentials: endpoint === 'signin' ? 'include' : 'omit'
+ }).then(res => {
+ if (--pending === 0) spinner.parentNode.removeChild(spinner);
+ if (res.status === 200) {
+ res.json().then(resolve);
+ } else if (res.status === 204) {
+ resolve();
+ } else {
+ res.json().then(err => {
+ reject(err.error);
+ });
+ }
+ }).catch(reject);
+ });
+};