function _get_url(_url, data) { const url = new URL(window.location.origin + _url) console.log(_url, data, window.location.origin) 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' }, } } 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) } function crud(type_s) { const type = '/' + type_s + 's/' 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) }, } } export default { folder: crud('folder'), file: crud('file'), 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) }, }