From 2859718948172279dd433c68b135d8757a12a4a0 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 13 Oct 2020 12:51:37 +0200 Subject: [PATCH] faucet-client: Add FaucetClient class --- packages/faucet-client/src/faucetclient.ts | 33 +++++++++++++++++++ packages/faucet-client/src/index.ts | 1 + .../faucet-client/types/faucetclient.d.ts | 5 +++ packages/faucet-client/types/index.d.ts | 1 + 4 files changed, 40 insertions(+) create mode 100644 packages/faucet-client/src/faucetclient.ts create mode 100644 packages/faucet-client/src/index.ts create mode 100644 packages/faucet-client/types/faucetclient.d.ts create mode 100644 packages/faucet-client/types/index.d.ts diff --git a/packages/faucet-client/src/faucetclient.ts b/packages/faucet-client/src/faucetclient.ts new file mode 100644 index 00000000..03cc13fc --- /dev/null +++ b/packages/faucet-client/src/faucetclient.ts @@ -0,0 +1,33 @@ +import axios from "axios"; + +export class FaucetClient { + private readonly baseUrl: string; + + public constructor(baseUrl: string) { + if (!baseUrl.match(/^https?:\/\//)) { + throw new Error("Expected base url to start with http:// or https://"); + } + + // Strip trailing / + const strippedBaseUrl = baseUrl.replace(/(\/)+$/, ""); + this.baseUrl = strippedBaseUrl; + } + + public async credit(address: string, denom: string): Promise { + const body = { + address: address, + denom: denom, + }; + + try { + await axios.post(this.baseUrl + "/credit", body); + } catch (error) { + if (error.response) { + // append response body to error message + throw new Error(`${error}; response body: ${JSON.stringify(error.response.data)}`); + } else { + throw error; + } + } + } +} diff --git a/packages/faucet-client/src/index.ts b/packages/faucet-client/src/index.ts new file mode 100644 index 00000000..7a2633a5 --- /dev/null +++ b/packages/faucet-client/src/index.ts @@ -0,0 +1 @@ +export { FaucetClient } from "./faucetclient"; diff --git a/packages/faucet-client/types/faucetclient.d.ts b/packages/faucet-client/types/faucetclient.d.ts new file mode 100644 index 00000000..3f7c74da --- /dev/null +++ b/packages/faucet-client/types/faucetclient.d.ts @@ -0,0 +1,5 @@ +export declare class FaucetClient { + private readonly baseUrl; + constructor(baseUrl: string); + credit(address: string, denom: string): Promise; +} diff --git a/packages/faucet-client/types/index.d.ts b/packages/faucet-client/types/index.d.ts new file mode 100644 index 00000000..7a2633a5 --- /dev/null +++ b/packages/faucet-client/types/index.d.ts @@ -0,0 +1 @@ +export { FaucetClient } from "./faucetclient";