@atomist/automation-client
Version:
Atomist API for software low-level client
40 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable-next-line:import-blacklist
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(Object.assign({}, httpClient_1.DefaultHttpClientOptions), options);
const request = () => {
return axios_1.default.request(this.configureOptions(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);
}
configureOptions(options) {
return options;
}
}
exports.AxiosHttpClient = AxiosHttpClient;
/**
* HttpClientFactory that creates HttpClient instances backed by Axios.
*/
class AxiosHttpClientFactory {
create(url) {
return new AxiosHttpClient();
}
}
exports.AxiosHttpClientFactory = AxiosHttpClientFactory;
//# sourceMappingURL=axiosHttpClient.js.map