cosmjs-util/packages/faucet/src/api/requestparser.ts
2020-09-17 17:03:42 +02:00

53 lines
1.4 KiB
TypeScript

import { isNonNullObject } from "@cosmjs/utils";
import { HttpError } from "./httperror";
export interface CreditRequestBodyData {
/** The base denomination */
readonly denom: string;
/** The recipient address */
readonly address: string;
}
export interface CreditRequestBodyDataWithTicker {
/** The ticker symbol */
readonly ticker: string;
/** The recipient address */
readonly address: string;
}
export class RequestParser {
public static parseCreditBody(body: unknown): CreditRequestBodyData {
if (!isNonNullObject(body) || Array.isArray(body)) {
throw new HttpError(400, "Request body must be a dictionary.");
}
const { address, denom, ticker } = body as any;
if (typeof ticker !== "undefined") {
throw new HttpError(400, "The 'ticker' field was removed in CosmJS 0.23. Please use 'denom' instead.");
}
if (typeof address !== "string") {
throw new HttpError(400, "Property 'address' must be a string.");
}
if (address.length === 0) {
throw new HttpError(400, "Property 'address' must not be empty.");
}
if (typeof denom !== "string") {
throw new HttpError(400, "Property 'denom' must be a string.");
}
if (denom.length === 0) {
throw new HttpError(400, "Property 'denom' must not be empty.");
}
return {
address: address,
denom: denom,
};
}
}