aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/backend.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/backend.js')
-rw-r--r--frontend/src/backend.js48
1 files changed, 45 insertions, 3 deletions
diff --git a/frontend/src/backend.js b/frontend/src/backend.js
index 72ee9dd..dc5089f 100644
--- a/frontend/src/backend.js
+++ b/frontend/src/backend.js
@@ -1,7 +1,23 @@
+/*
+ * This file is part of caronte (https://github.com/eciavatta/caronte).
+ * Copyright (c) 2020 Emiliano Ciavatta.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
async function json(method, url, data, json, headers) {
const options = {
- method: method,
+ method,
body: json != null ? JSON.stringify(json) : data,
mode: "cors",
cache: "no-cache",
@@ -26,9 +42,33 @@ async function json(method, url, data, json, headers) {
}
}
+async function download(url, headers) {
+
+ const options = {
+ mode: "cors",
+ cache: "no-cache",
+ credentials: "same-origin",
+ headers: headers || {},
+ redirect: "follow",
+ referrerPolicy: "no-referrer",
+ };
+ const response = await fetch(url, options);
+ const result = {
+ statusCode: response.status,
+ status: `${response.status} ${response.statusText}`,
+ blob: await response.blob()
+ };
+
+ if (response.status >= 200 && response.status < 300) {
+ return result;
+ } else {
+ return Promise.reject(result);
+ }
+}
+
const backend = {
get: (url = "", headers = null) =>
- json("GET", url, null,null, headers),
+ json("GET", url, null, null, headers),
post: (url = "", data = null, headers = null) =>
json("POST", url, null, data, headers),
put: (url = "", data = null, headers = null) =>
@@ -36,7 +76,9 @@ const backend = {
delete: (url = "", data = null, headers = null) =>
json("DELETE", url, null, data, headers),
postFile: (url = "", data = null, headers = {}) =>
- json("POST", url, data, null, headers)
+ json("POST", url, data, null, headers),
+ download: (url = "", headers = null) =>
+ download(url, headers)
};
export default backend;