const app = require('./app') app.service('api', function($http) { this.opts = { headers: {}, withCredentials: true } this.postProcess = (res) => res.data this.get = (path) => $http.get(path, this.opts).then(this.postProcess) this.post = (path, data) => $http.post(path, data, this.opts).then(this.postProcess) this.put = (path, data) => $http.put(path, data, this.opts).then(this.postProcess) this.patch = (path, data) => $http.patch(path, data, this.opts).then(this.postProcess) this.delete = (path) => $http.delete(path, this.opts).then(this.postProcess) this.login = data => this.post('/api/auth/login', data) this.setToken = token => { this.token = token this.opts.headers.authentication = `Bearer ${token}` } this.crud = (apiPrefix) => ({ list: () => this.get(apiPrefix), create: data => this.post(apiPrefix, data), read: id => this.get(`${apiPrefix}/${id}`), update: (id, data) => this.patch(`${apiPrefix}/${id}`, data), delete: (id) => this.delete(`${apiPrefix}/${id}`), trash: () => this.get(`${apiPrefix}/trash`), undelete: (id) => this.delete(`${apiPrefix}/trash/${id}`) }) })