From ca9699623fe431f77b5785bd5b636d3620efff8e Mon Sep 17 00:00:00 2001 From: Justin Enerio Date: Mon, 4 Nov 2024 01:05:41 +0800 Subject: [PATCH] feat: added order service client (#8) --- .gitignore | 1 + dist/index.d.ts | 8 +++--- dist/index.js | 59 ++++++++++++++++++++++++----------------- dist/index.js.map | 2 +- package-lock.json | 4 +-- package.json | 2 +- src/index.ts | 67 +++++++++++++++++++++++++++++------------------ 7 files changed, 86 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index 7cd67f4..439031c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ .vscode/ node_modules +example \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 2bde0db..b059bbf 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -86,10 +86,11 @@ export type Order = { }; export declare class XFlowPartnerClient { private authKeyPair; - private readonly baseUrl; + private readonly kycBaseUrl; + private readonly orderBaseUrl; private _authPublicKey; - private _token; - private _apiClient; + private _kycClient; + private _orderClient; private constructor(); static generateKeyPair(): Promise<{ publicKey: string; @@ -102,6 +103,7 @@ export declare class XFlowPartnerClient { static fromSeed(seed: string): Promise; private init; private generateAuthToken; + private createToken; getUserData({ userPK, secretKey }: DataAccessParams): Promise; getOrder({ externalId, orderId }: OrderIds): Promise; getPartnerOrders(): Promise; diff --git a/dist/index.js b/dist/index.js index 2c800b5..6dbd7fc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6,7 +6,8 @@ import base58 from "bs58"; import naclUtil from "tweetnacl-util"; import ed2curve from "ed2curve"; import { documentTypeToJSON, ValidationStatus as ProtoValidationStatus, WrappedData, WrappedValidation, } from "./generated/protos/data.js"; -const _baseURL = "https://kyc-backend-oxvpvdtvzq-ew.a.run.app"; +const _kycBaseURL = "https://kyc-backend-oxvpvdtvzq-ew.a.run.app"; +const _orderBaseURL = "https://kyc-backend-orders-402681483920.europe-west1.run.app/"; export var ValidationStatus; (function (ValidationStatus) { ValidationStatus["Unspecified"] = "UNSPECIFIED"; @@ -31,16 +32,18 @@ function toValidationStatus(protoStatus) { } export class XFlowPartnerClient { authKeyPair; - baseUrl; + kycBaseUrl; + orderBaseUrl; _authPublicKey; - _token; - _apiClient; - constructor({ authKeyPair, baseUrl }) { + _kycClient; + _orderClient; + constructor({ authKeyPair, kycBaseUrl, orderBaseUrl }) { this.authKeyPair = authKeyPair; - this.baseUrl = baseUrl || _baseURL; + this.kycBaseUrl = kycBaseUrl || _kycBaseURL; + this.orderBaseUrl = orderBaseUrl || _orderBaseURL; this._authPublicKey = ""; - this._token = ""; - this._apiClient = null; + this._kycClient = null; + this._orderClient = null; } static async generateKeyPair() { const keyPair = nacl.sign.keyPair(); @@ -78,24 +81,32 @@ export class XFlowPartnerClient { this.authKeyPair.getPrivateKeyBytes(), ]); this._authPublicKey = base58.encode(publicKeyBytes); + const kycToken = await this.createToken(privateKeyBytes, "kyc.espressocash.com"); + this._kycClient = axios.create({ + baseURL: this.kycBaseUrl, + headers: { Authorization: `Bearer ${kycToken}` }, + }); + const orderToken = await this.createToken(privateKeyBytes, "orders.espressocash.com"); + this._orderClient = axios.create({ + baseURL: this.orderBaseUrl, + headers: { Authorization: `Bearer ${orderToken}` }, + }); + } + async createToken(privateKeyBytes, audience) { const header = { alg: "EdDSA", typ: "JWT" }; const payload = { iss: this._authPublicKey, iat: Math.floor(Date.now() / 1000), - aud: "kyc.espressocash.com", + aud: audience, }; const encodedHeader = base64url.encode(JSON.stringify(header)); const encodedPayload = base64url.encode(JSON.stringify(payload)); const dataToSign = `${encodedHeader}.${encodedPayload}`; const signature = nacl.sign.detached(new TextEncoder().encode(dataToSign), privateKeyBytes); - this._token = `${dataToSign}.${base64url.encode(signature)}`; - this._apiClient = axios.create({ - baseURL: this.baseUrl, - headers: { Authorization: `Bearer ${this._token}` }, - }); + return `${dataToSign}.${base64url.encode(signature)}`; } async getUserData({ userPK, secretKey }) { - const response = await this._apiClient.post("/v1/getUserData", { + const response = await this._kycClient.post("/v1/getUserData", { userPublicKey: userPK, }); const responseData = response.data; @@ -198,18 +209,18 @@ export class XFlowPartnerClient { return userData; } async getOrder({ externalId, orderId }) { - const response = await this._apiClient.post("/v1/getOrder", { + const response = await this._orderClient.post("/v1/getOrder", { orderId: orderId, externalId: externalId, }); return response.data; } async getPartnerOrders() { - const response = await this._apiClient.post("/v1/getPartnerOrders"); + const response = await this._orderClient.post("/v1/getPartnerOrders"); return response.data; } async acceptOnRampOrder({ orderId, bankName, bankAccount, externalId }) { - await this._apiClient.post("/v1/acceptOrder", { + await this._orderClient.post("/v1/acceptOrder", { orderId: orderId, bankName: bankName, bankAccount: bankAccount, @@ -217,40 +228,40 @@ export class XFlowPartnerClient { }); } async completeOnRampOrder({ orderId, transactionId, externalId }) { - await this._apiClient.post("/v1/completeOrder", { + await this._orderClient.post("/v1/completeOrder", { orderId: orderId, transactionId: transactionId, externalId: externalId, }); } async acceptOffRampOrder({ orderId, cryptoWalletAddress, externalId }) { - await this._apiClient.post("/v1/acceptOrder", { + await this._orderClient.post("/v1/acceptOrder", { orderId: orderId, cryptoWalletAddress: cryptoWalletAddress, externalId: externalId, }); } async completeOffRampOrder({ orderId, externalId }) { - await this._apiClient.post("/v1/completeOrder", { + await this._orderClient.post("/v1/completeOrder", { orderId: orderId, externalId: externalId, }); } async failOrder({ orderId, reason, externalId }) { - await this._apiClient.post("/v1/failOrder", { + await this._orderClient.post("/v1/failOrder", { orderId: orderId, reason: reason, externalId: externalId, }); } async rejectOrder({ orderId, reason }) { - await this._apiClient.post("/v1/rejectOrder", { + await this._orderClient.post("/v1/rejectOrder", { orderId: orderId, reason: reason, }); } async getUserInfo(publicKey) { - const response = await this._apiClient.post("/v1/getInfo", { + const response = await this._kycClient.post("/v1/getInfo", { publicKey: publicKey, }); return response.data; diff --git a/dist/index.js.map b/dist/index.js.map index 60c1c96..bf62354 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7be5ee8..95a002f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "xflow-partner-client", - "version": "0.1.9", + "version": "0.1.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "xflow-partner-client", - "version": "0.1.9", + "version": "0.1.12", "license": "ISC", "dependencies": { "@bufbuild/protobuf": "^2.2.0", diff --git a/package.json b/package.json index d883995..b51721c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xflow-partner-client", - "version": "0.1.11", + "version": "0.1.12", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/index.ts b/src/index.ts index f0122cc..f50e309 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,7 +12,8 @@ import { WrappedValidation, } from "./generated/protos/data.js"; -const _baseURL = "https://kyc-backend-oxvpvdtvzq-ew.a.run.app"; +const _kycBaseURL = "https://kyc-backend-oxvpvdtvzq-ew.a.run.app"; +const _orderBaseURL = "https://kyc-backend-orders-402681483920.europe-west1.run.app/"; interface AuthKeyPair { getPrivateKeyBytes(): Promise; @@ -22,7 +23,8 @@ interface AuthKeyPair { interface XFlowPartnerClientOptions { authKeyPair: AuthKeyPair; - baseUrl?: string; + kycBaseUrl?: string; + orderBaseUrl?: string; } export type OrderIds = { orderId: string; externalId?: "" } | { orderId?: ""; externalId: string }; @@ -112,17 +114,19 @@ function toValidationStatus(protoStatus: ProtoValidationStatus): ValidationStatu export class XFlowPartnerClient { private authKeyPair: AuthKeyPair; - private readonly baseUrl: string; + private readonly kycBaseUrl: string; + private readonly orderBaseUrl: string; private _authPublicKey: string; - private _token: string; - private _apiClient: AxiosInstance | null; + private _kycClient: AxiosInstance | null; + private _orderClient: AxiosInstance | null; - private constructor({ authKeyPair, baseUrl }: XFlowPartnerClientOptions) { + private constructor({ authKeyPair, kycBaseUrl, orderBaseUrl }: XFlowPartnerClientOptions) { this.authKeyPair = authKeyPair; - this.baseUrl = baseUrl || _baseURL; + this.kycBaseUrl = kycBaseUrl || _kycBaseURL; + this.orderBaseUrl = orderBaseUrl || _orderBaseURL; this._authPublicKey = ""; - this._token = ""; - this._apiClient = null; + this._kycClient = null; + this._orderClient = null; } static async generateKeyPair() { @@ -169,11 +173,27 @@ export class XFlowPartnerClient { this._authPublicKey = base58.encode(publicKeyBytes); + const kycToken = await this.createToken(privateKeyBytes, "kyc.espressocash.com"); + + this._kycClient = axios.create({ + baseURL: this.kycBaseUrl, + headers: { Authorization: `Bearer ${kycToken}` }, + }); + + const orderToken = await this.createToken(privateKeyBytes, "orders.espressocash.com"); + + this._orderClient = axios.create({ + baseURL: this.orderBaseUrl, + headers: { Authorization: `Bearer ${orderToken}` }, + }); + } + + private async createToken(privateKeyBytes: Uint8Array, audience: string): Promise { const header = { alg: "EdDSA", typ: "JWT" }; const payload = { iss: this._authPublicKey, iat: Math.floor(Date.now() / 1000), - aud: "kyc.espressocash.com", + aud: audience, }; const encodedHeader = base64url.encode(JSON.stringify(header)); @@ -182,16 +202,11 @@ export class XFlowPartnerClient { const signature = nacl.sign.detached(new TextEncoder().encode(dataToSign), privateKeyBytes); - this._token = `${dataToSign}.${base64url.encode(signature)}`; - - this._apiClient = axios.create({ - baseURL: this.baseUrl, - headers: { Authorization: `Bearer ${this._token}` }, - }); + return `${dataToSign}.${base64url.encode(signature)}`; } async getUserData({ userPK, secretKey }: DataAccessParams): Promise { - const response = await this._apiClient!.post("/v1/getUserData", { + const response = await this._kycClient!.post("/v1/getUserData", { userPublicKey: userPK, }); const responseData = response.data; @@ -302,7 +317,7 @@ export class XFlowPartnerClient { } async getOrder({ externalId, orderId }: OrderIds): Promise { - const response = await this._apiClient!.post("/v1/getOrder", { + const response = await this._orderClient!.post("/v1/getOrder", { orderId: orderId, externalId: externalId, }); @@ -311,13 +326,13 @@ export class XFlowPartnerClient { } async getPartnerOrders(): Promise { - const response = await this._apiClient!.post("/v1/getPartnerOrders"); + const response = await this._orderClient!.post("/v1/getPartnerOrders"); return response.data; } async acceptOnRampOrder({ orderId, bankName, bankAccount, externalId }: AcceptOnRampOrderParams): Promise { - await this._apiClient!.post("/v1/acceptOrder", { + await this._orderClient!.post("/v1/acceptOrder", { orderId: orderId, bankName: bankName, bankAccount: bankAccount, @@ -326,7 +341,7 @@ export class XFlowPartnerClient { } async completeOnRampOrder({ orderId, transactionId, externalId }: CompleteOnRampOrderParams): Promise { - await this._apiClient!.post("/v1/completeOrder", { + await this._orderClient!.post("/v1/completeOrder", { orderId: orderId, transactionId: transactionId, externalId: externalId, @@ -334,7 +349,7 @@ export class XFlowPartnerClient { } async acceptOffRampOrder({ orderId, cryptoWalletAddress, externalId }: AcceptOffRampOrderParams): Promise { - await this._apiClient!.post("/v1/acceptOrder", { + await this._orderClient!.post("/v1/acceptOrder", { orderId: orderId, cryptoWalletAddress: cryptoWalletAddress, externalId: externalId, @@ -342,14 +357,14 @@ export class XFlowPartnerClient { } async completeOffRampOrder({ orderId, externalId }: OrderIds): Promise { - await this._apiClient!.post("/v1/completeOrder", { + await this._orderClient!.post("/v1/completeOrder", { orderId: orderId, externalId: externalId, }); } async failOrder({ orderId, reason, externalId }: FailOrderParams): Promise { - await this._apiClient!.post("/v1/failOrder", { + await this._orderClient!.post("/v1/failOrder", { orderId: orderId, reason: reason, externalId: externalId, @@ -357,14 +372,14 @@ export class XFlowPartnerClient { } async rejectOrder({ orderId, reason }: RejectOrderParams): Promise { - await this._apiClient!.post("/v1/rejectOrder", { + await this._orderClient!.post("/v1/rejectOrder", { orderId: orderId, reason: reason, }); } async getUserInfo(publicKey: string) { - const response = await this._apiClient!.post("/v1/getInfo", { + const response = await this._kycClient!.post("/v1/getInfo", { publicKey: publicKey, });