aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/bank-conversion.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/http-client/bank-conversion.ts')
-rw-r--r--packages/taler-util/src/http-client/bank-conversion.ts30
1 files changed, 27 insertions, 3 deletions
diff --git a/packages/taler-util/src/http-client/bank-conversion.ts b/packages/taler-util/src/http-client/bank-conversion.ts
index f53b6a661..2bc9fdb79 100644
--- a/packages/taler-util/src/http-client/bank-conversion.ts
+++ b/packages/taler-util/src/http-client/bank-conversion.ts
@@ -2,14 +2,18 @@ import { AmountJson, Amounts } from "../amounts.js";
import { HttpRequestLibrary } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
-import { FailCasesByMethod, ResultByMethod, opKnownFailure, opSuccess, opUnknownFailure } from "../operation.js";
+import { FailCasesByMethod, ResultByMethod, opEmptySuccess, opKnownFailure, opSuccess, opUnknownFailure } from "../operation.js";
import { TalerErrorCode } from "../taler-error-codes.js";
import { codecForTalerErrorDetail } from "../wallet-types.js";
import {
+ AccessToken,
+ TalerBankConversionApi,
+ UserAndToken,
codecForCashinConversionResponse,
codecForCashoutConversionResponse,
codecForConversionBankConfig
} from "./types.js";
+import { makeBearerTokenAuthHeader } from "./utils.js";
export type TalerBankConversionResultByMethod<prop extends keyof TalerBankConversionHttpClient> = ResultByMethod<TalerBankConversionHttpClient, prop>
export type TalerBankConversionErrorsByMethod<prop extends keyof TalerBankConversionHttpClient> = FailCasesByMethod<TalerBankConversionHttpClient, prop>
@@ -70,7 +74,7 @@ export class TalerBankConversionHttpClient {
}
}
case HttpStatusCode.Conflict: return opKnownFailure("amount-too-small", resp);
- case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
+ case HttpStatusCode.NotImplemented: return opKnownFailure("conversion-not-supported", resp);
default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -103,11 +107,31 @@ export class TalerBankConversionHttpClient {
}
}
case HttpStatusCode.Conflict: return opKnownFailure("amount-too-small", resp);
- case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
+ case HttpStatusCode.NotImplemented: return opKnownFailure("conversion-not-supported", resp);
default: return opUnknownFailure(resp, await resp.text())
}
}
+ /**
+ * https://docs.taler.net/core/api-bank-conversion-info.html#post--conversion-rate
+ *
+ */
+ async updateConversionRate(auth: AccessToken, body: TalerBankConversionApi.ConversionRate) {
+ const url = new URL(`conversion-rate`, this.baseUrl);
+ const resp = await this.httpLib.fetch(url.href, {
+ method: "POST",
+ headers: {
+ Authorization: makeBearerTokenAuthHeader(auth)
+ },
+ body
+ });
+ switch (resp.status) {
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.Unauthorized: return opKnownFailure("unauthorized", resp);
+ case HttpStatusCode.NotImplemented: return opKnownFailure("conversion-not-supported", resp);
+ default: return opUnknownFailure(resp, await resp.text())
+ }
+ }
}