diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-05-28 20:18:20 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-05-28 20:18:20 +0200 |
| commit | 84aca1791d43ae5a65bd88747636e418b380ad64 (patch) | |
| tree | f56687c992bb6dc3956e8744be8030a48f00d95e /app/api | |
| parent | c248031739699775477c838f8e836fedf243c720 (diff) | |
reconsidering datasets component... stub in api client
Diffstat (limited to 'app/api')
| -rw-r--r-- | app/api/crud.js | 98 | ||||
| -rw-r--r-- | app/api/index.js | 20 |
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') |
