From dd5aa2145f06a4744cf8f4f3fe14525b613acf87 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 26 Mar 2024 16:54:35 -0300 Subject: fix #8660 --- packages/taler-util/src/http-client/authentication.ts | 12 ++++++------ packages/taler-util/src/http-client/bank-core.ts | 10 ++++++---- packages/taler-util/src/http-client/merchant.ts | 6 ++++-- packages/taler-util/src/http-common.ts | 1 + packages/taler-util/src/http-impl.node.ts | 9 +++++++-- packages/taler-util/src/http-impl.qtart.ts | 8 +++++++- 6 files changed, 31 insertions(+), 15 deletions(-) (limited to 'packages/taler-util') diff --git a/packages/taler-util/src/http-client/authentication.ts b/packages/taler-util/src/http-client/authentication.ts index 00ef21a06..f77df2ed0 100644 --- a/packages/taler-util/src/http-client/authentication.ts +++ b/packages/taler-util/src/http-client/authentication.ts @@ -45,7 +45,6 @@ export class TalerAuthenticationHttpClient { constructor( readonly baseUrl: string, - readonly username: string, httpClient?: HttpRequestLibrary, ) { this.httpLib = httpClient ?? createPlatformHttpLib(); @@ -61,7 +60,8 @@ export class TalerAuthenticationHttpClient { * * @returns */ - async createAccessToken( + async createAccessTokenBasic( + username: string, password: string, body: TalerAuthentication.TokenRequest, ) { @@ -69,7 +69,7 @@ export class TalerAuthenticationHttpClient { const resp = await this.httpLib.fetch(url.href, { method: "POST", headers: { - Authorization: makeBasicAuthHeader(this.username, password), + Authorization: makeBasicAuthHeader(username, password), }, body, }); @@ -90,15 +90,15 @@ export class TalerAuthenticationHttpClient { * * @returns */ - async createAccessTokenMerchant( - password: string, + async createAccessTokenBearer( + token: string, body: TalerAuthentication.TokenRequest, ) { const url = new URL(`token`, this.baseUrl); const resp = await this.httpLib.fetch(url.href, { method: "POST", headers: { - Authorization: makeBearerTokenAuthHeader(password as AccessToken), + Authorization: makeBearerTokenAuthHeader(token as AccessToken), }, body, }); diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts index b544d56fe..7a98b6281 100644 --- a/packages/taler-util/src/http-client/bank-core.ts +++ b/packages/taler-util/src/http-client/bank-core.ts @@ -140,16 +140,18 @@ export class TalerCoreBankHttpClient { * */ async createAccount( - auth: AccessToken, + auth: AccessToken | undefined, body: TalerCorebankApi.RegisterAccountRequest, ) { const url = new URL(`accounts`, this.baseUrl); + const headers: Record = {} + if (auth) { + headers.Authorization = makeBearerTokenAuthHeader(auth) + } const resp = await this.httpLib.fetch(url.href, { method: "POST", body, - headers: { - Authorization: makeBearerTokenAuthHeader(auth), - }, + headers: headers, }); switch (resp.status) { case HttpStatusCode.Ok: { diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts index 1b1a7b4a8..394625e38 100644 --- a/packages/taler-util/src/http-client/merchant.ts +++ b/packages/taler-util/src/http-client/merchant.ts @@ -354,10 +354,11 @@ export class TalerMerchantInstanceHttpClient { headers, }); - // switch (resp.status) { case HttpStatusCode.Ok: return opEmptySuccess(resp); + case HttpStatusCode.NoContent: // FIXME: missing in docs + return opEmptySuccess(resp); case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); default: @@ -1778,9 +1779,10 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp */ async updateInstanceAuthentication( token: AccessToken | undefined, + instanceId: string, body: TalerMerchantApi.InstanceAuthConfigurationMessage, ) { - const url = new URL(`management/instances`, this.baseUrl); + const url = new URL(`management/instances/${instanceId}/auth`, this.baseUrl); const headers: Record = {} if (token) { diff --git a/packages/taler-util/src/http-common.ts b/packages/taler-util/src/http-common.ts index 3973e66fb..cc75debd5 100644 --- a/packages/taler-util/src/http-common.ts +++ b/packages/taler-util/src/http-common.ts @@ -440,6 +440,7 @@ export interface HttpLibArgs { * Only allow HTTPS connections, not plain http. */ requireTls?: boolean; + printAsCurl?: boolean; } export function encodeBody(body: any): ArrayBuffer { diff --git a/packages/taler-util/src/http-impl.node.ts b/packages/taler-util/src/http-impl.node.ts index b5c87843f..8606bc451 100644 --- a/packages/taler-util/src/http-impl.node.ts +++ b/packages/taler-util/src/http-impl.node.ts @@ -119,8 +119,13 @@ export class HttpLibImpl implements HttpRequestLibrary { timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS; } - const requestHeadersMap = { ...getDefaultHeaders(method), ...opt?.headers }; - + const requestHeadersMap = getDefaultHeaders(method); + if (opt?.headers) { + Object.entries(opt?.headers).forEach(([key, value]) => { + if (value === undefined) return; + requestHeadersMap[key] = value + }) + } logger.trace(`request timeout ${timeoutMs} ms`); let reqBody: ArrayBuffer | undefined; diff --git a/packages/taler-util/src/http-impl.qtart.ts b/packages/taler-util/src/http-impl.qtart.ts index 0be9f2c23..b4e4ebbe7 100644 --- a/packages/taler-util/src/http-impl.qtart.ts +++ b/packages/taler-util/src/http-impl.qtart.ts @@ -98,7 +98,13 @@ export class HttpLibImpl implements HttpRequestLibrary { } let data: ArrayBuffer | undefined = undefined; - const requestHeadersMap = { ...getDefaultHeaders(method), ...opt?.headers }; + const requestHeadersMap = getDefaultHeaders(method); + if (opt?.headers) { + Object.entries(opt?.headers).forEach(([key, value]) => { + if (value === undefined) return; + requestHeadersMap[key] = value + }) + } let headersList: string[] = []; for (let headerName of Object.keys(requestHeadersMap)) { headersList.push(`${headerName}: ${requestHeadersMap[headerName]}`); -- cgit v1.2.3