UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

52 lines (50 loc) 1.9 kB
import { toResponse } from "./chunk-VENBCZAM.mjs"; import { isRestResult } from "./chunk-NUFTFLAY.mjs"; import { HttpStatus } from "./chunk-RPZ2XDQQ.mjs"; import { RequestOptions } from "./chunk-QIBUS2GL.mjs"; import { cacheAge } from "./chunk-4GK27OOO.mjs"; import { choose, ctx, toResult } from "./chunk-AVHYDITZ.mjs"; import { isDefined, isEmpty } from "./chunk-AAND4MKF.mjs"; // src/services/AxiosProvider.ts import axios from "axios"; var isResponse = (a) => isDefined(a?.response); var isRequest = (a) => isDefined(a?.request); var asResponse = (uri, verb, error) => choose(error).type( isResponse, (r) => toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers) ).type(isRequest, (r) => toResponse(r.request.status, toResult(r.request.message, uri.path, uri))).else((e) => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri))); var AxiosProvider = class { constructor(ai = axios) { this.ai = ai; } execute = ({ uri, verb, body, transform = (r) => r, transformError = (r) => r, options = RequestOptions.Json }) => this.ai.request({ url: uri.toString(), method: verb.toString(), headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers, data: options.type.encode(body), maxRedirects: options.requestOptions.maxRedirects, ...options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) }, ...options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus } }).then((r) => toResponse(r.status, transform(r.data), r.headers)).catch((e) => Promise.reject(asResponse(uri, verb, transformError(e)))); }; export { AxiosProvider }; //# sourceMappingURL=chunk-M2LLIIPG.mjs.map