|
1 | | -import { AxiosRequestConfig } from 'axios'; |
2 | | -import { AxiosWithVersioning, VersioningStrategy, IVersioningConfig } from './types' |
| 1 | +import { AxiosInstance } from 'axios'; |
| 2 | +import { VersioningStrategy, IVersioningConfig, } from './types' |
| 3 | +import { AxiosRequestConfigWithVersioning } from './axios.types'; |
3 | 4 |
|
4 | 5 | function replaceUrlPathWithVersion(url: string, apiVersion: string) { |
5 | 6 | // the template name of the api version must be "apiVersion" |
6 | 7 | return url.replace('{apiVersion}', apiVersion); |
7 | 8 | } |
8 | 9 |
|
9 | | -function enhanceConfigByVersioningStrategy(instance: AxiosWithVersioning, requestConfig: AxiosRequestConfig, versioningConfig: IVersioningConfig): AxiosRequestConfig { |
10 | | - if (instance.defaults.hasOwnProperty('apiVersion') === false && requestConfig['apiVersion'] === undefined) { |
11 | | - return requestConfig; |
12 | | - } |
| 10 | +function enhanceConfigByVersioningStrategy(requestConfig: AxiosRequestConfigWithVersioning, versioningConfig: IVersioningConfig): AxiosRequestConfigWithVersioning { |
13 | 11 |
|
14 | 12 | // we prioritize the apiVersion passed via the RequestConfig first |
15 | | - // then use the global default apiVersion last |
16 | | - const apiVersion = requestConfig['apiVersion'] || instance.defaults['apiVersion']; |
| 13 | + // then use the initial versioningConfig last |
| 14 | + const apiVersion = requestConfig['apiVersion'] || versioningConfig['apiVersion']; |
17 | 15 |
|
18 | | - // same way here, we prioritize the RequestConfig first then the global defaults |
19 | | - const versioningStrategy = requestConfig['versioningStrategy'] || instance.defaults['versioningStrategy']; |
| 16 | + // same way here, we prioritize the RequestConfig first then the initial defaults |
| 17 | + const versioningStrategy = requestConfig['versioningStrategy'] || versioningConfig['versioningStrategy']; |
20 | 18 |
|
21 | 19 | if (versioningStrategy === VersioningStrategy.QueryString) { |
22 | 20 | requestConfig.params = { |
@@ -60,10 +58,10 @@ function enhanceConfigByVersioningStrategy(instance: AxiosWithVersioning, reques |
60 | 58 | return requestConfig; |
61 | 59 | } |
62 | 60 |
|
63 | | -export function injectApiVersioningInterceptor(instance: AxiosWithVersioning, versioningConfig: IVersioningConfig) { |
| 61 | +export function injectApiVersioningInterceptor(instance: AxiosInstance, versioningConfig: IVersioningConfig) { |
64 | 62 | // add an interceptor |
65 | | - instance.interceptors.request.use((requestConfig) => { |
66 | | - const enhancedConfig = enhanceConfigByVersioningStrategy(instance, requestConfig, versioningConfig); |
| 63 | + instance.interceptors.request.use((requestConfig: AxiosRequestConfigWithVersioning) => { |
| 64 | + const enhancedConfig = enhanceConfigByVersioningStrategy(requestConfig, versioningConfig); |
67 | 65 | return enhancedConfig; |
68 | 66 | }); |
69 | 67 | } |
0 commit comments