@@ -106,14 +106,16 @@ export class HttpClient {
106106 url : string ,
107107 timeoutMs : number ,
108108 responseAsStream : boolean ,
109+ isDeepL : boolean ,
109110 options : SendRequestOptions ,
110111 ) : AxiosRequestConfig {
111112 const headers = Object . assign ( { } , this . headers , options . headers ) ;
113+ logDebug ( `isDeepL: ${ isDeepL } ` ) ;
112114
113115 const axiosRequestConfig : AxiosRequestConfig = {
114116 url,
115117 method,
116- baseURL : this . serverUrl ,
118+ baseURL : isDeepL ? this . serverUrl : undefined ,
117119 headers,
118120 responseType : responseAsStream ? 'stream' : 'text' ,
119121 timeout : timeoutMs ,
@@ -147,19 +149,26 @@ export class HttpClient {
147149 /**
148150 * Makes API request retrying if necessary, and returns (as Promise) response.
149151 * @param method HTTP method, for example 'GET'
150- * @param url Path to endpoint, excluding base server URL.
152+ * @param url Path to endpoint, excluding base server URL if DeepL API request, including base server URL if a webpage .
151153 * @param options Additional options controlling request.
152154 * @param responseAsStream Set to true if the return type is IncomingMessage.
153- * @return Fulfills with status code and response (as text or stream).
155+ * @return Fulfills with status code, content type, and response (as text or stream).
154156 */
155157 async sendRequestWithBackoff < TContent extends string | IncomingMessage > (
156158 method : HttpMethod ,
157159 url : string ,
158160 options ?: SendRequestOptions ,
159161 responseAsStream = false ,
160- ) : Promise < { statusCode : number ; content : TContent } > {
162+ ) : Promise < { statusCode : number ; content : TContent ; contentType ?: string } > {
163+ let isDeepLUrl : boolean ;
164+ try {
165+ isDeepLUrl = ! ! new URL ( url ) ;
166+ } catch {
167+ isDeepLUrl = true ;
168+ }
169+
161170 options = options === undefined ? { } : options ;
162- logInfo ( `Request to DeepL API ${ method } ${ url } ` ) ;
171+ logInfo ( `${ isDeepLUrl ? ' Request to DeepL API' : 'Request to webpage' } ${ method } ${ url } ` ) ;
163172 logDebug ( `Request details: ${ options . data } ` ) ;
164173 const backoff = new BackoffTimer ( ) ;
165174 let response , error ;
@@ -170,8 +179,14 @@ export class HttpClient {
170179 url ,
171180 timeoutMs ,
172181 responseAsStream ,
182+ isDeepLUrl ,
173183 options ,
174184 ) ;
185+
186+ if ( ! isDeepLUrl && axiosRequestConfig . headers ) {
187+ delete axiosRequestConfig . headers . Authorization ;
188+ }
189+
175190 try {
176191 response = await HttpClient . sendAxiosRequest < TContent > ( axiosRequestConfig ) ;
177192 error = undefined ;
@@ -199,8 +214,12 @@ export class HttpClient {
199214 }
200215
201216 if ( response !== undefined ) {
202- const { statusCode, content } = response ;
203- logInfo ( `DeepL API response ${ method } ${ url } ${ statusCode } ` ) ;
217+ const { statusCode, content, contentType } = response ;
218+ logInfo (
219+ `${
220+ isDeepLUrl ? 'DeepL API response' : 'Webpage response'
221+ } ${ method } ${ url } ${ statusCode } ${ ! isDeepLUrl ? ` ${ contentType } ` : '' } `,
222+ ) ;
204223 if ( ! responseAsStream ) {
205224 logDebug ( 'Response details:' , { content : content } ) ;
206225 }
@@ -217,7 +236,7 @@ export class HttpClient {
217236 */
218237 private static async sendAxiosRequest < TContent extends string | IncomingMessage > (
219238 axiosRequestConfig : AxiosRequestConfig ,
220- ) : Promise < { statusCode : number ; content : TContent } > {
239+ ) : Promise < { statusCode : number ; content : TContent ; contentType ?: string } > {
221240 try {
222241 const response = await axios . request ( axiosRequestConfig ) ;
223242
@@ -227,7 +246,12 @@ export class HttpClient {
227246 response . data = JSON . stringify ( response . data ) ;
228247 }
229248 }
230- return { statusCode : response . status , content : response . data } ;
249+
250+ return {
251+ statusCode : response . status ,
252+ content : response . data ,
253+ contentType : response . headers [ 'content-type' ] ,
254+ } ;
231255 } catch ( axios_error_raw ) {
232256 const axiosError = axios_error_raw as AxiosError ;
233257 const message : string = axiosError . message || '' ;
0 commit comments