1919 * under the License.
2020 */
2121
22- import axios , { AxiosResponse , AxiosError } from 'axios' ;
22+ import axios , { AxiosResponse , AxiosError , AxiosRequestConfig } from 'axios' ;
2323import { IHttpRequest } from './IHttpRequest' ;
2424import { stringify as qsStringify } from 'querystring' ;
2525import { HttpClient } from './HttpClient' ;
@@ -66,8 +66,7 @@ export class DefaultHttpClient implements HttpClient {
6666 if ( this . defaultOption . proxy && this . defaultOption . proxy !== '' ) {
6767 proxyAgent = HttpsProxyAgent ( this . defaultOption . proxy ) ;
6868 }
69-
70- this . axiosInstance = axios . create ( {
69+ const axiosRequestConfig : AxiosRequestConfig = {
7170 maxContentLength : Infinity ,
7271 headers : Object . assign (
7372 this . DEFAULT_HEADERS ,
@@ -76,7 +75,13 @@ export class DefaultHttpClient implements HttpClient {
7675 proxy : false ,
7776 httpAgent : proxyAgent ,
7877 httpsAgent : proxyAgent
79- } ) ;
78+ } ;
79+
80+ if ( this . defaultOption . axiosRequestConfig ) {
81+ Object . assign ( axiosRequestConfig , this . defaultOption . axiosRequestConfig ) ;
82+ }
83+
84+ this . axiosInstance = axios . create ( axiosRequestConfig ) ;
8085
8186 this . axiosInstance . interceptors . request . use ( ( request : any ) => {
8287 const { url, method, data, headers } = request ;
@@ -118,7 +123,7 @@ export class DefaultHttpClient implements HttpClient {
118123 const result = this . _convertResponse < T > ( httpRequest , res ) ;
119124
120125 return {
121- data : result instanceof String ? undefined : result ,
126+ data : result ,
122127 statusCode : res . status ,
123128 headers : res . headers
124129 } ;
@@ -143,7 +148,7 @@ export class DefaultHttpClient implements HttpClient {
143148 if ( this . defaultOption . headers ) {
144149 const customUserAgent = this . defaultOption . headers [ 'User-Agent' ] ;
145150 if ( customUserAgent ) {
146- headers [ 'User-Agent' ] = [ "huaweicloud-usdk-nodejs/3.0" , customUserAgent ] . join ( " " ) ;
151+ headers [ 'User-Agent' ] = [ "huaweicloud-usdk-nodejs/3.0" , customUserAgent ] . join ( " " ) ;
147152 } else {
148153 headers [ 'User-Agent' ] = "huaweicloud-usdk-nodejs/3.0"
149154 }
@@ -159,6 +164,11 @@ export class DefaultHttpClient implements HttpClient {
159164 return qsStringify ( params ) ;
160165 } ,
161166 } ;
167+
168+ if ( httpRequest . axiosRequestConfig ) {
169+ Object . assign ( requestParams , httpRequest . axiosRequestConfig ) ;
170+ }
171+
162172 const methods : string [ ] = [ 'PUT' , 'POST' , 'PATCH' , 'DELETE' ] ;
163173 if ( method && methods . indexOf ( method . toUpperCase ( ) ) !== - 1 ) {
164174 requestParams = Object . assign ( requestParams , {
@@ -204,7 +214,7 @@ export class DefaultHttpClient implements HttpClient {
204214 data : error . response ? error . response . data : undefined ,
205215 status : error . response ? error . response . status : undefined ,
206216 headers : error . response ? error . response . headers : undefined ,
207- message : error . message || undefined ,
217+ message : error . message || undefined ,
208218 requestId : error . response ?. headers [ 'x-request-id' ]
209219 }
210220 return transformedResponse ;
@@ -223,4 +233,5 @@ export interface ClientOptions {
223233 headers ?: any ,
224234 logger ?: Logger ,
225235 logLevel ?: LogLevel ;
236+ axiosRequestConfig ?: AxiosRequestConfig
226237}
0 commit comments