import { HttpRequestLibrary } from "../http-common.js"; import { HttpStatusCode } from "../http-status-codes.js"; import { createPlatformHttpLib } from "../http.js"; import { FailCasesByMethod, ResultByMethod, opSuccess, opUnknownFailure } from "../operation.js"; import { codecForExchangeConfig } from "./types.js"; export type TalerExchangeResultByMethod = ResultByMethod export type TalerExchangeErrorsByMethod = FailCasesByMethod /** */ export class TalerExchangeHttpClient { httpLib: HttpRequestLibrary; constructor( readonly baseUrl: string, httpClient?: HttpRequestLibrary, ) { this.httpLib = httpClient ?? createPlatformHttpLib(); } /** * https://docs.taler.net/core/api-merchant.html#get--config * */ async getConfig() { const url = new URL(`config`, this.baseUrl); const resp = await this.httpLib.fetch(url.href, { method: "GET" }); switch (resp.status) { case HttpStatusCode.Ok: return opSuccess(resp, codecForExchangeConfig()) default: return opUnknownFailure(resp, await resp.text()) } } }