-validation
This commit is contained in:
parent
308a4282cb
commit
6286699f26
@ -379,11 +379,44 @@ export interface Balance {
|
||||
requiresUserInput: boolean;
|
||||
}
|
||||
|
||||
export const codecForScopeInfoGlobal = (): Codec<ScopeInfoGlobal> =>
|
||||
buildCodecForObject<ScopeInfoGlobal>()
|
||||
.property("currency", codecForString())
|
||||
.property("type", codecForConstString(ScopeType.Global))
|
||||
.build("ScopeInfoGlobal");
|
||||
|
||||
export const codecForScopeInfoExchange = (): Codec<ScopeInfoExchange> =>
|
||||
buildCodecForObject<ScopeInfoExchange>()
|
||||
.property("currency", codecForString())
|
||||
.property("type", codecForConstString(ScopeType.Exchange))
|
||||
.property("url", codecForString())
|
||||
.build("ScopeInfoExchange");
|
||||
|
||||
export const codecForScopeInfoAuditor = (): Codec<ScopeInfoAuditor> =>
|
||||
buildCodecForObject<ScopeInfoAuditor>()
|
||||
.property("currency", codecForString())
|
||||
.property("type", codecForConstString(ScopeType.Auditor))
|
||||
.property("url", codecForString())
|
||||
.build("ScopeInfoAuditor");
|
||||
|
||||
export const codecForScopeInfo = (): Codec<ScopeInfo> =>
|
||||
buildCodecForUnion<ScopeInfo>()
|
||||
.discriminateOn("type")
|
||||
.alternative(ScopeType.Global, codecForScopeInfoGlobal())
|
||||
.alternative(ScopeType.Exchange, codecForScopeInfoExchange())
|
||||
.alternative(ScopeType.Auditor, codecForScopeInfoAuditor())
|
||||
.build("ScopeInfo");
|
||||
|
||||
export interface GetCurrencyInfoRequest {
|
||||
currency: string;
|
||||
scope: ScopeInfo;
|
||||
}
|
||||
|
||||
export const codecForGetCurrencyInfoRequest =
|
||||
(): Codec<GetCurrencyInfoRequest> =>
|
||||
buildCodecForObject<GetCurrencyInfoRequest>()
|
||||
.property("scope", codecForScopeInfo())
|
||||
.build("GetCurrencyInfoRequest");
|
||||
|
||||
export interface GetCurrencyInfoResponse {
|
||||
decimalSeparator: string;
|
||||
numFractionalDigits: number;
|
||||
@ -407,10 +440,19 @@ export enum ScopeType {
|
||||
Auditor = "auditor",
|
||||
}
|
||||
|
||||
export type ScopeInfo =
|
||||
| { type: ScopeType.Global; currency: string }
|
||||
| { type: ScopeType.Exchange; currency: string; url: string }
|
||||
| { type: ScopeType.Auditor; currency: string; url: string };
|
||||
export type ScopeInfoGlobal = { type: ScopeType.Global; currency: string };
|
||||
export type ScopeInfoExchange = {
|
||||
type: ScopeType.Exchange;
|
||||
currency: string;
|
||||
url: string;
|
||||
};
|
||||
export type ScopeInfoAuditor = {
|
||||
type: ScopeType.Auditor;
|
||||
currency: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
export type ScopeInfo = ScopeInfoGlobal | ScopeInfoExchange | ScopeInfoAuditor;
|
||||
|
||||
export interface BalancesResponse {
|
||||
balances: Balance[];
|
||||
|
@ -212,7 +212,7 @@ export enum WalletApiOperation {
|
||||
ApplyDevExperiment = "applyDevExperiment",
|
||||
ValidateIban = "validateIban",
|
||||
TestingWaitTransactionsFinal = "testingWaitTransactionsFinal",
|
||||
GetCurrencyInfo = "getCurrencyInfo",
|
||||
GetScopedCurrencyInfo = "getScopedCurrencyInfo",
|
||||
}
|
||||
|
||||
// group: Initialization
|
||||
@ -604,8 +604,8 @@ export type ListCurrenciesOp = {
|
||||
response: WalletCurrencyInfo;
|
||||
};
|
||||
|
||||
export type GetCurrencyInfoOp = {
|
||||
op: WalletApiOperation.GetCurrencyInfo;
|
||||
export type GetScopedCurrencyInfoOp = {
|
||||
op: WalletApiOperation.GetScopedCurrencyInfo;
|
||||
request: GetCurrencyInfoRequest;
|
||||
response: GetCurrencyInfoResponse;
|
||||
};
|
||||
@ -1081,7 +1081,7 @@ export type WalletOperations = {
|
||||
[WalletApiOperation.ApplyDevExperiment]: ApplyDevExperimentOp;
|
||||
[WalletApiOperation.ValidateIban]: ValidateIbanOp;
|
||||
[WalletApiOperation.TestingWaitTransactionsFinal]: TestingWaitTransactionsFinal;
|
||||
[WalletApiOperation.GetCurrencyInfo]: GetCurrencyInfoOp;
|
||||
[WalletApiOperation.GetScopedCurrencyInfo]: GetScopedCurrencyInfoOp;
|
||||
};
|
||||
|
||||
export type WalletCoreRequestType<
|
||||
|
@ -119,6 +119,7 @@ import {
|
||||
validateIban,
|
||||
codecForSharePaymentRequest,
|
||||
GetCurrencyInfoResponse,
|
||||
codecForGetCurrencyInfoRequest,
|
||||
} from "@gnu-taler/taler-util";
|
||||
import {
|
||||
HttpRequestLibrary,
|
||||
@ -1396,7 +1397,10 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
|
||||
const resp = await getBackupRecovery(ws);
|
||||
return resp;
|
||||
}
|
||||
case WalletApiOperation.GetCurrencyInfo: {
|
||||
case WalletApiOperation.GetScopedCurrencyInfo: {
|
||||
logger.info(`payload: ${j2s(payload)}`);
|
||||
// Ignore result, just validate in this mock implementation
|
||||
codecForGetCurrencyInfoRequest().decode(payload);
|
||||
const resp: GetCurrencyInfoResponse = {
|
||||
decimalSeparator: ",",
|
||||
isCurrencyNameLeading: false,
|
||||
|
Loading…
Reference in New Issue
Block a user