From 20e9846afcdacf30bd7d8b065b16c0070849bce0 Mon Sep 17 00:00:00 2001 From: tonynazarov Date: Fri, 20 Sep 2024 08:59:30 +1200 Subject: [PATCH] add options to builder --- src/HeadersBuilder.ts | 3 ++- src/MetlinkHttpClientBuilder.ts | 20 +++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/HeadersBuilder.ts b/src/HeadersBuilder.ts index 55f0a21..f9097fc 100644 --- a/src/HeadersBuilder.ts +++ b/src/HeadersBuilder.ts @@ -1,6 +1,7 @@ import {HeadersDictInterface} from "./Contracts"; export class HeadersBuilder { + private readonly API_KEYWORD: string = "x-api-key"; private headers: HeadersDictInterface = {}; public newHeaders() { @@ -15,7 +16,7 @@ export class HeadersBuilder { return this; } - public addToken(token: string, key: string = "x-api-key") { + public addToken(token: string, key: string = this.API_KEYWORD) { this.headers[key] = token; return this; diff --git a/src/MetlinkHttpClientBuilder.ts b/src/MetlinkHttpClientBuilder.ts index 326495d..96b1398 100644 --- a/src/MetlinkHttpClientBuilder.ts +++ b/src/MetlinkHttpClientBuilder.ts @@ -6,23 +6,29 @@ import axios from "axios"; import {ResponseDataDecorator} from "./ResponseDataDecorator"; export class MetlinkHttpClientBuilder { - public static buildWithAxios(token: string): MetlinkHttpClient { + + public static buildWithAxios(token: string, options: object = {}): MetlinkHttpClient { const [host, headers]: [HostInterface, HeadersDictInterface] = HeadersDirector.build(token); - const axiosInstance = axios.create({ + const config = { baseURL: host.getUrl(), headers: headers - }); + }; + + const axiosInstance = axios.create({...options, ...config}); return new MetlinkHttpClient(new AxiosAdapter(axiosInstance)); } - public static buildWithAxiosAndDecorate(token: string): ResponseDataDecorator { + public static buildWithAxiosAndDecorate(token: string, options: object = {}): ResponseDataDecorator { + const [host, headers]: [HostInterface, HeadersDictInterface] = HeadersDirector.build(token); - const axiosInstance = axios.create({ + const config = { baseURL: host.getUrl(), headers: headers - }); + }; + + const axiosInstance = axios.create({...options, ...config}); return new ResponseDataDecorator(new MetlinkHttpClient(new AxiosAdapter(axiosInstance))); } -} \ No newline at end of file +}