@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
52 lines (50 loc) • 1.9 kB
JavaScript
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