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) }