UNPKG

axios-rest-api

Version:

Simple Axios wrapper for simple REST Api requests

74 lines (67 loc) 1.61 kB
import _ from 'underscore'; import routes from './assets/routes'; export default class Router { constructor() { this.root = '/'; this.url = ''; this.routing = routes; this.params = {}; } init(host, prefix, version) { const ver = version ? `${version}/` : ''; const pre = prefix ? `${prefix}/` : ''; this.root = `${host}/${pre}${ver}`; return this; } setRouting(routing, resource) { this.routing = { route: resource, }; _.extend(this.routing, routes, routing); return this; } setParams(params, url) { const result = url.replace(/\{(.*?)\}/gi, (match, token) => { const slug = params[token]; delete params[token]; return slug; }); // console.log('url: ', [this.root, result, params]); this.params = params || {}; return result; } getUrlPath(method) { let result; const {route} = this.routing; const action = this.routing[method]; result = route || ''; if (result && action) { result = `${result}/${action}`; } else if (action) { result = action; } return result; } setUrl(method, params, url) { let result; let {root} = this; if (this.isAbsolute(url)) { root = ''; result = url; } else { if (url) { result = url; } else { result = this.getUrlPath(method); } } result = this.setParams(params, result); this.url = root + result; return this.url; } // eslint-disable-next-line isAbsolute(url) { const re = new RegExp('(www|://)'); return re.test(url); } }