UNPKG

tipi-services

Version:

Node.js library to access wrapping REST API of tipi backend services

50 lines (47 loc) 1.32 kB
const request = require('request-promise-native') const _ = require('lodash') const ValidateEndpoint = require('./ValidateEndpoint') const QueryParamsMaker = require('./QueryParamsMaker') module.exports = async ({ endpoint, query, params, body, formData, headers } = {}) => { // validate data if (endpoint.schema) { ValidateEndpoint({ query, params, body }, endpoint.schema) } // put params let uri = endpoint.uri _.each(params, (value, key) => { uri = uri.replace(`:${key}`, value) }) // put query if (!_.isEmpty(query)) { const queryParams = QueryParamsMaker(query) uri = `${uri}?${queryParams}` } // create requestData const requestData = { method: endpoint.method, uri, json: true } if (body) { requestData.body = body } else if (formData) { requestData.formData = formData requestData.headers = { 'content-type': 'multipart/form-data' } } // put headers if(headers){ requestData.headers = {...requestData.headers,...headers} } // call request and return try { const response = await request(requestData) if (response && response.data) return response.data return response } catch (e) { if (e.error && e.error.error) throw e.error.error throw e } }