refactor: use a custom instance od axios per client
This commit is contained in:
parent
edda00090a
commit
c61f2f6127
|
@ -88,26 +88,12 @@ export type RequestConfig = CustomClientOptions & {
|
||||||
transformResponse?: (data: string) => Record<string, unknown>;
|
transformResponse?: (data: string) => Record<string, unknown>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add a response interceptor so that we always return an error of type
|
|
||||||
// `ExecuteResponseError`.
|
|
||||||
axios.interceptors.response.use(
|
|
||||||
function (response) {
|
|
||||||
// Any status code that lie within the range of 2xx cause this function to trigger.
|
|
||||||
// Do something with response data.
|
|
||||||
return response;
|
|
||||||
},
|
|
||||||
function (error) {
|
|
||||||
// Any status codes that falls outside the range of 2xx cause this function to trigger
|
|
||||||
// Do something with response error.
|
|
||||||
return Promise.reject(ExecuteRequestError.From(error as AxiosError));
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The S5 Client which can be used to access S5-net.
|
* The S5 Client which can be used to access S5-net.
|
||||||
*/
|
*/
|
||||||
export class S5Client {
|
export class S5Client {
|
||||||
customOptions: CustomClientOptions;
|
customOptions: CustomClientOptions;
|
||||||
|
private httpClient = axios.create();
|
||||||
|
|
||||||
// The initial portal URL, the value of `defaultPortalUrl()` if `new
|
// The initial portal URL, the value of `defaultPortalUrl()` if `new
|
||||||
// S5Client` is called without a given portal. This initial URL is used to
|
// S5Client` is called without a given portal. This initial URL is used to
|
||||||
|
@ -163,6 +149,21 @@ export class S5Client {
|
||||||
}
|
}
|
||||||
this.initialPortalUrl = initialPortalUrl;
|
this.initialPortalUrl = initialPortalUrl;
|
||||||
this.customOptions = customOptions;
|
this.customOptions = customOptions;
|
||||||
|
|
||||||
|
// Add a response interceptor so that we always return an error of type
|
||||||
|
// `ExecuteResponseError`.
|
||||||
|
this.httpClient.interceptors.response.use(
|
||||||
|
function (response) {
|
||||||
|
// Any status code that lie within the range of 2xx cause this function to trigger.
|
||||||
|
// Do something with response data.
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
function (error) {
|
||||||
|
// Any status codes that falls outside the range of 2xx cause this function to trigger
|
||||||
|
// Do something with response error.
|
||||||
|
return Promise.reject(ExecuteRequestError.From(error as AxiosError));
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
|
@ -274,7 +275,7 @@ export class S5Client {
|
||||||
// NOTE: The error type is `ExecuteRequestError`. We set up a response
|
// NOTE: The error type is `ExecuteRequestError`. We set up a response
|
||||||
// interceptor above that does the conversion from `AxiosError`.
|
// interceptor above that does the conversion from `AxiosError`.
|
||||||
try {
|
try {
|
||||||
return await axios(params);
|
return await this.httpClient.request(params);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// If `loginFn` is set and we get an Unauthorized response...
|
// If `loginFn` is set and we get an Unauthorized response...
|
||||||
if (config.loginFn && (e as ExecuteRequestError).responseStatus === 401) {
|
if (config.loginFn && (e as ExecuteRequestError).responseStatus === 401) {
|
||||||
|
|
Loading…
Reference in New Issue