summaryrefslogtreecommitdiff
path: root/app/api
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-28 20:18:20 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-28 20:18:20 +0200
commit84aca1791d43ae5a65bd88747636e418b380ad64 (patch)
treef56687c992bb6dc3956e8744be8030a48f00d95e /app/api
parentc248031739699775477c838f8e836fedf243c720 (diff)
reconsidering datasets component... stub in api client
Diffstat (limited to 'app/api')
-rw-r--r--app/api/crud.js98
-rw-r--r--app/api/index.js20
2 files changed, 118 insertions, 0 deletions
diff --git a/app/api/crud.js b/app/api/crud.js
new file mode 100644
index 0000000..1d7b305
--- /dev/null
+++ b/app/api/crud.js
@@ -0,0 +1,98 @@
+import fetch from 'node-fetch'
+
+export function crud(type_s, tag) {
+ const type = '/' + type_s + 's/' + (tag || '')
+ return {
+ index: (data) => {
+ return fetch(_get_url(type, data), _get_headers())
+ .then(req => req.json())
+ .catch(error)
+ },
+
+ show: (id) => {
+ return fetch(type + id)
+ .then(req => req.json())
+ .catch(error)
+ },
+
+ create: (data) => {
+ return fetch(type, post(data))
+ .then(req => req.json())
+ .catch(error)
+ },
+
+ update: (data) => {
+ return fetch(type + data.id, put(data))
+ .then(req => req.json())
+ .catch(error)
+ },
+
+ destroy: (data) => {
+ return fetch(type + data.id, destroy(data))
+ .then(req => req.json())
+ .catch(error)
+ },
+
+ under: function(tag){
+ return crud(type_s, tag)
+ },
+ }
+}
+
+function _get_url(_url, data) {
+ const url = new URL(window.location.origin + _url)
+ if (data) {
+ Object.keys(data).forEach(key => url.searchParams.append(key, data[key]))
+ }
+ return url
+}
+function _get_headers() {
+ return {
+ method: 'GET',
+ headers: {
+ 'Accept': 'application/json',
+ },
+ }
+}
+function post(data) {
+ return {
+ method: 'POST',
+ body: JSON.stringify(data),
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ },
+ }
+}
+export function postBody(data) {
+ return {
+ method: 'POST',
+ body: data,
+ headers: {
+ 'Accept': 'application/json',
+ },
+ }
+}
+function put(data) {
+ return {
+ method: 'PUT',
+ body: JSON.stringify(data),
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ },
+ }
+}
+function destroy(data) {
+ return {
+ method: 'DELETE',
+ body: JSON.stringify(data),
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ },
+ }
+}
+function error(err) {
+ console.warn(err)
+}
diff --git a/app/api/index.js b/app/api/index.js
new file mode 100644
index 0000000..7562db7
--- /dev/null
+++ b/app/api/index.js
@@ -0,0 +1,20 @@
+import FormData from 'form-data'
+import fetch from 'node-fetch'
+
+import { crud, postBody } from './crud'
+
+export const folder = crud('folder')
+
+folder.upload = (folder_id, files) => {
+ var data = new FormData()
+ for (var i = 0; i < files.length; i++) {
+ data.append('file', files[i])
+ }
+ return fetch('/folders/' + folder_id, postBody(data))
+ .then(req => req.json())
+ .catch(error)
+}
+
+export const file = crud('file')
+export const task = crud('task')
+export const job = crud('job')