@atomist/automation-client
Version:
Atomist API for software low-level client
43 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const axios_1 = require("axios");
const http_1 = require("../../internal/util/http");
const retry_1 = require("../../util/retry");
const httpClient_1 = require("./httpClient");
/**
* Axios based HttpClient implementation.
*/
class AxiosHttpClient {
exchange(url, options = {}) {
const optionsToUse = Object.assign({}, httpClient_1.DefaultHttpClientOptions, options);
const request = () => {
return axios_1.default.request(http_1.configureProxy(Object.assign({ url, headers: optionsToUse.headers, method: optionsToUse.method.toString().toUpperCase(), data: optionsToUse.body }, optionsToUse.options)))
.then(result => {
return {
status: result.status,
headers: result.headers,
body: result.data,
};
});
};
return retry_1.doWithRetry(request, `Requesting '${url}'`, optionsToUse.retry);
}
}
exports.AxiosHttpClient = AxiosHttpClient;
/**
* HttpClientFactory that creates HttpClient instances backed by Axios.
*/
class AxiosHttpClientFactory {
create(url) {
return new AxiosHttpClient();
}
}
exports.AxiosHttpClientFactory = AxiosHttpClientFactory;
/**
* Default HttpClientFactory which gets registered in the automation-client if not a
* different HttpClientFactory implementation is configured.
* @see Configuration.http.client.factory
* @type {HttpClientFactory}
*/
exports.DefaultHttpClientFactory = new AxiosHttpClientFactory();
//# sourceMappingURL=axiosHttpClient.js.map