@apistudio/apim-cli
Version:
CLI for API Management Products
53 lines (48 loc) • 1.42 kB
text/typescript
/**
* Copyright IBM Corp. 2024, 2025
*/
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';
import https from 'https';
import { HttpClient, HttpClientOpt } from './http-client.js';
const MAX_UPLOAD_SIZE = 20 * 1024 * 1024; // 20 MB
export class AxiosClient implements HttpClient {
private getAgentConfig(validateSSL: boolean): Partial<AxiosRequestConfig> {
return {
httpsAgent: new https.Agent({
rejectUnauthorized: validateSSL, // true = verify SSL, false = ignore SSL errors
}),
};
}
async request(
options: HttpClientOpt,
isFormDataAvailable: boolean = false,
): Promise<AxiosResponse | AxiosError> {
const {
method,
url,
headers = {},
data,
params,
timeout = 10000, // default 10s timeout
proxy,
validateSSL = false,
// auth,
} = options;
const axiosConfig: AxiosRequestConfig = {
method,
url,
headers: isFormDataAvailable
? { 'content-type': 'application/octet-stream' }
: headers,
...(data !== undefined && { data }),
...(params && { params }),
...(timeout && { timeout }),
...(proxy && { proxy }),
// ...(auth && { auth }),
...(url && this.getAgentConfig(validateSSL)),
maxContentLength: MAX_UPLOAD_SIZE,
maxBodyLength: MAX_UPLOAD_SIZE,
};
return await axios(axiosConfig);
}
}