UNPKG

standard-json-api-connectors

Version:
29 lines (25 loc) 904 B
import qs from 'qs' import throwOnError from './helpers/throwOnError.js' import createResponseObject from './helpers/createResponseObject.js' import { CorsError } from 'standard-api-errors' export default (fetch, apiUrl, generateRoute, generateHeaderFields = () => ({}), options = {}) => async (params, query) => { const queryString = qs.stringify(query, { encodeValuesOnly: true }) let response const requestOptions = { method: 'GET', headers: { ...generateHeaderFields(params), 'Content-Type': 'application/json' } } if (options.timeout) { requestOptions.signal = AbortSignal.timeout(options.timeout) } try { response = await fetch(`${apiUrl}${generateRoute(params)}${queryString ? `?${queryString}` : ''}`, requestOptions) } catch (error) { throw new CorsError() } await throwOnError(response) return await createResponseObject(response) }