taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit f0ce241e8f3db8af5067bdda5b5532d1bbdbd5c3
parent e0639bf7621f4f65e5b773ec15b651ba2eeb436f
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Mon, 19 Oct 2026 08:21:23 +0200

add get supported taldir aliases

Diffstat:
Mpackages/taler-util/src/types-taler-directory.ts | 2+-
Mpackages/taler-util/src/types-taler-wallet.ts | 17+++++++++++++++++
Mpackages/taler-wallet-core/src/requests.ts | 7+++++++
Mpackages/taler-wallet-core/src/taldir.ts | 30++++++++++++++++++++++++++++++
Mpackages/taler-wallet-core/src/wallet-api-types.ts | 16++++++++++++++++
5 files changed, 71 insertions(+), 1 deletion(-)

diff --git a/packages/taler-util/src/types-taler-directory.ts b/packages/taler-util/src/types-taler-directory.ts @@ -37,7 +37,7 @@ export const codecForTalerDirectoryConfigResponse = .property("alias_types", codecForList(codecForTaldirAliasType())) .build("TalerDirectoryApi.VersionResponse"); -interface TaldirAliasType { +export interface TaldirAliasType { // Name of the alias type, e.g. "email" or "sms". name: string; diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -111,6 +111,10 @@ import { TransactionState, TransactionStateWildcard, } from "./types-taler-wallet-transactions.js"; +import { + TaldirAliasType, +} from "./types-taler-directory.js"; + /** * Identifier for a transaction in the wallet. @@ -1688,6 +1692,19 @@ export interface TaldirLookupResponse { targetUri?: string; } +export interface TaldirSupportedAliasesResponse { + supportedAliases: TaldirAliasType[]; +} + +export interface TaldirGetSupportedAliasesRequest { + taldirBaseUrl: string; +} + +export const codecForTaldirGetSupportedAliasesRequest = (): Codec<TaldirGetSupportedAliasesRequest> => + buildCodecForObject<TaldirGetSupportedAliasesRequest>() + .property("taldirBaseUrl", codecForString()) + .build("TaldirGetSupportedAliasesRequest"); + export interface GetMailboxResponse { mailboxConfiguration?: MailboxConfiguration; } diff --git a/packages/taler-wallet-core/src/requests.ts b/packages/taler-wallet-core/src/requests.ts @@ -255,6 +255,8 @@ import { codecForStartExchangeWalletKycRequest, codecForStartRefundQueryRequest, codecForSuspendTransaction, + codecForTaldirGetSupportedAliasesRequest, + codecForTaldirAliasType, codecForTaldirLookupRequest, codecForTaldirRegistrationCompletionRequest, codecForTaldirRegistrationRequest, @@ -397,6 +399,7 @@ import { completeAliasRegistration, lookupAlias, registerAlias, + getSupportedAliases, } from "./taldir.js"; import { WithdrawTestBalanceResult, @@ -2582,6 +2585,10 @@ const handlers: { [T in WalletApiOperation]: HandlerWithValidator<T> } = { codec: codecForTaldirLookupRequest(), handler: lookupAlias, }, + [WalletApiOperation.GetSupportedAliases]: { + codec: codecForTaldirGetSupportedAliasesRequest(), + handler: getSupportedAliases, + }, [WalletApiOperation.InitializeMailbox]: { codec: codecForMailboxBaseUrl(), handler: createNewMailbox, diff --git a/packages/taler-wallet-core/src/taldir.ts b/packages/taler-wallet-core/src/taldir.ts @@ -27,6 +27,8 @@ import { TaldirLookupResponse, sha512, HttpStatusCode, + TaldirGetSupportedAliasesRequest, + TaldirSupportedAliasesResponse, TaldirRegistrationRequest, TaldirRegistrationResponse, TaldirRegistrationCompletionRequest, @@ -52,6 +54,34 @@ function createHAliasBuffer(aliasType: string, alias: string): Uint8Array { } /** + * Get supported alias types + */ +export async function getSupportedAliases( + wex: WalletExecutionContext, + lookupRequest: TaldirGetSupportedAliasesRequest, +): Promise<TaldirSupportedAliasesResponse> { + const taldirClient = new TalerDirectoryInstanceHttpClient( + lookupRequest.taldirBaseUrl, + wex.http, + ); + // Refresh message size + const resConf = await taldirClient.getConfig(); + switch (resConf.case) { + case "ok": { + return { + supportedAliases: resConf.body.alias_types, + } + } + default: + throw TalerError.fromDetail( + TalerErrorCode.WALLET_ALIAS_REGISTRATION_FAILED, + { directoryBaseUrl: lookupRequest.taldirBaseUrl }, + "could not read the configuration of the directory service", + ); + } +} + +/** * Lookup alias */ export async function lookupAlias( diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts @@ -192,6 +192,8 @@ import { StartExchangeWalletKycRequest, StartRefundQueryForUriResponse, StartRefundQueryRequest, + TaldirGetSupportedAliasesRequest, + TaldirSupportedAliasesResponse, TaldirLookupRequest, TaldirLookupResponse, TaldirRegistrationCompletionRequest, @@ -382,6 +384,7 @@ export enum WalletApiOperation { RegisterAlias = "registerAlias", CompleteRegisterAlias = "completeRegisterAlias", LookupAlias = "lookupAlias", + GetSupportedAliases = "getSupportedAliases", // Wallet database management @@ -628,6 +631,15 @@ export type LookupAliasOp = { response: TaldirLookupResponse; }; +/** + * Get supported aliases + */ +export type GetSupportedAliasesOp = { + op: WalletApiOperation.GetSupportedAliases; + request: TaldirGetSupportedAliasesRequest; + response: TaldirSupportedAliasesResponse; +}; + // group: Mailbox /** @@ -2094,6 +2106,9 @@ export const walletApiExpectedErrors = { [WalletApiOperation.LookupAlias]: [ TalerErrorCode.WALLET_ALIAS_REGISTRATION_FAILED, ], + [WalletApiOperation.GetSupportedAliases]: [ + TalerErrorCode.WALLET_ALIAS_REGISTRATION_FAILED, + ], // --- Database maintenance ----------------------------------------------- @@ -2257,6 +2272,7 @@ export type WalletOperations = { [WalletApiOperation.RegisterAlias]: RegisterAliasOp; [WalletApiOperation.CompleteRegisterAlias]: CompleteRegisterAliasOp; [WalletApiOperation.LookupAlias]: LookupAliasOp; + [WalletApiOperation.GetSupportedAliases]: GetSupportedAliasesOp; [WalletApiOperation.GetMailbox]: GetMailboxOp; [WalletApiOperation.InitializeMailbox]: InitializeMailboxOp; [WalletApiOperation.RefreshMailbox]: RefreshMailboxOp;