From 325a0856f2577671c5c1a806e72e8a9dd4045347 Mon Sep 17 00:00:00 2001 From: Tarun Kumar Date: Fri, 19 Jun 2020 10:33:31 -0400 Subject: [PATCH 1/3] Adding the create fiat account API --- layouts/default.vue | 8 ++ lib/accountsApi.ts | 73 ++++++++++ lib/accountsTestData.ts | 28 ++++ nuxt.config.js | 1 + pages/debug/accounts/create.vue | 231 ++++++++++++++++++++++++++++++++ pages/debug/index.vue | 47 +------ plugins/accountsApi.ts | 42 ++++++ 7 files changed, 388 insertions(+), 42 deletions(-) create mode 100644 lib/accountsApi.ts create mode 100644 lib/accountsTestData.ts create mode 100644 pages/debug/accounts/create.vue create mode 100644 plugins/accountsApi.ts diff --git a/layouts/default.vue b/layouts/default.vue index 3234e775..6bd3fcdd 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -222,6 +222,10 @@ export default class DefaultLayoutsClass extends Vue { title: 'GET /settlements/{id}', to: '/debug/settlements/details', }, + { + title: 'POST /accounts', + to: '/debug/accounts/create', + }, ] paymentsLinks = [ @@ -273,6 +277,10 @@ export default class DefaultLayoutsClass extends Vue { title: 'GET /settlements/{id}', to: '/debug/settlements/details', }, + { + title: 'POST /accounts', + to: '/debug/accounts/create', + }, ] walletsLinks = [ diff --git a/lib/accountsApi.ts b/lib/accountsApi.ts new file mode 100644 index 00000000..2a125dc5 --- /dev/null +++ b/lib/accountsApi.ts @@ -0,0 +1,73 @@ +import { get } from 'lodash' +import axios from 'axios' + +import { getAPIHostname } from './apiTarget' + +export interface CreateAccountPayload { + idempotencyKey: string + beneficiaryName: string + bankName: string + accountNumber: string + bankIdentifier: string + billingDetails: { + name: string + city: string + country: string + line1: string + line2: string + district: string + postalCode: string + } + bankAddress: { + city: string + country: string + line1: string + line2: string + district: string + postalCode: string + } +} + +const instance = axios.create({ + baseURL: getAPIHostname(), +}) + +/** + * Global error handler: + * Intercepts all axios reponses and maps + * to errorHandler object + */ +instance.interceptors.response.use( + function (response) { + if (get(response, 'data.data')) { + return response.data.data + } + return response + }, + function (error) { + let response = get(error, 'response') + if (!response) { + response = error.toJSON() + } + return Promise.reject(response) + } +) + +/** Returns the axios instance */ +function getInstance() { + return instance +} + +/** + * Create Account + * @param {*} payload (contains form data) + */ +function createAccount(payload: CreateAccountPayload) { + const url = '/v1/wires' + return instance.post(url, payload) +} + +export default { + getInstance, + createAccount, +} diff --git a/lib/accountsTestData.ts b/lib/accountsTestData.ts new file mode 100644 index 00000000..1d79f4cb --- /dev/null +++ b/lib/accountsTestData.ts @@ -0,0 +1,28 @@ +export const exampleAccounts = [ + { + title: 'Test Data', + formData: { + beneficiaryName: 'Test User 1', + bankName: 'WELLS FARGO BANK', + accountNumber: '11111111111', + bankIdentifier: '121000248', + billingDetails: { + name: 'Test User 1', + city: 'City', + country: 'US', + line1: 'Address1', + line2: 'Address2', + district: 'CA', + postalCode: '11111', + }, + bankAddress: { + city: 'SAN FRANCISCO', + country: 'US', + line1: 'line1', + line2: 'line2', + district: 'CA', + postalCode: '11111', + }, + }, + }, +] diff --git a/nuxt.config.js b/nuxt.config.js index cb200a6d..19e53882 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -44,6 +44,7 @@ export default { '~/plugins/walletsApi', '~/plugins/transfersApi', '~/plugins/addressesApi', + '~/plugins/accountsApi', ], /* ** Nuxt.js dev-modules diff --git a/pages/debug/accounts/create.vue b/pages/debug/accounts/create.vue new file mode 100644 index 00000000..d7bc74bd --- /dev/null +++ b/pages/debug/accounts/create.vue @@ -0,0 +1,231 @@ + + + diff --git a/pages/debug/index.vue b/pages/debug/index.vue index 1c67ce17..1567c2e3 100644 --- a/pages/debug/index.vue +++ b/pages/debug/index.vue @@ -154,53 +154,16 @@ -

Wallets endpoints

+

Accounts endpoints

Requires: api key

- Api endpoints to manage wallets. + Api endpoints to manage wire accounts.

- GET - Get all wallets -

-

- GET - - - Get wallet details by id - -

-

- POST - - Add wallet - -

-
- - -

Transfers endpoints

- Requires: api key -

-

- Api endpoints to manage transfers. -

-

- GET - Get all transfers -

-

- GET - - - Get transfer details by id - -

-

- POST - - Add transfer + POST + + Create wire account

diff --git a/plugins/accountsApi.ts b/plugins/accountsApi.ts new file mode 100644 index 00000000..40c85203 --- /dev/null +++ b/plugins/accountsApi.ts @@ -0,0 +1,42 @@ +import accountsApi, { CreateAccountPayload } from '@/lib/accountsApi' + +declare module 'vue/types/vue' { + interface Vue { + $accountsApi: { + createAccount: (payload: CreateAccountPayload) => any + getInstance: any + } + } +} + +export default ({ store }: any, inject: any) => { + const instance = accountsApi.getInstance() + + instance.interceptors.request.use( + function (config) { + store.commit('CLEAR_REQUEST_DATA') + store.commit('SET_REQUEST_URL', `${config.baseURL}${config.url}`) + store.commit('SET_REQUEST_PAYLOAD', config.data) + + if (store.state.bearerToken) { + config.headers = { Authorization: `Bearer ${store.state.bearerToken}` } + } + return config + }, + function (error) { + return Promise.reject(error) + } + ) + + instance.interceptors.response.use( + function (response) { + store.commit('SET_RESPONSE', response) + return response + }, + function (error) { + return Promise.reject(error) + } + ) + + inject('accountsApi', accountsApi) +} From a95b8fbb8afbe10efbac1f5691d058eeeedc5549 Mon Sep 17 00:00:00 2001 From: Tarun Kumar Date: Mon, 22 Jun 2020 10:58:30 -0400 Subject: [PATCH 2/3] Moving the files to wires folder and adding fetch details API --- layouts/default.vue | 45 +++++++++--- lib/accountsApi.ts | 11 +++ lib/accountsTestData.ts | 14 ++-- pages/debug/index.vue | 15 ---- pages/debug/{accounts => wires}/create.vue | 0 pages/debug/wires/details.vue | 83 ++++++++++++++++++++++ pages/debug/wires/index.vue | 42 +++++++++++ plugins/accountsApi.ts | 1 + 8 files changed, 181 insertions(+), 30 deletions(-) rename pages/debug/{accounts => wires}/create.vue (100%) create mode 100644 pages/debug/wires/details.vue create mode 100644 pages/debug/wires/index.vue diff --git a/layouts/default.vue b/layouts/default.vue index 6bd3fcdd..9d559536 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -112,6 +112,32 @@ + + + + + + + + Overview + + + + + + + + + + @@ -222,10 +248,6 @@ export default class DefaultLayoutsClass extends Vue { title: 'GET /settlements/{id}', to: '/debug/settlements/details', }, - { - title: 'POST /accounts', - to: '/debug/accounts/create', - }, ] paymentsLinks = [ @@ -277,10 +299,6 @@ export default class DefaultLayoutsClass extends Vue { title: 'GET /settlements/{id}', to: '/debug/settlements/details', }, - { - title: 'POST /accounts', - to: '/debug/accounts/create', - }, ] walletsLinks = [ @@ -318,6 +336,17 @@ export default class DefaultLayoutsClass extends Vue { }, ] + wiresLink = [ + { + title: 'GET /wires/{id}', + to: '/debug/wires/details', + }, + { + title: 'POST /wires', + to: '/debug/wires/create', + }, + ] + miniVariant = false right = true showRightDrawer = false diff --git a/lib/accountsApi.ts b/lib/accountsApi.ts index 2a125dc5..3e41bc7d 100644 --- a/lib/accountsApi.ts +++ b/lib/accountsApi.ts @@ -67,7 +67,18 @@ function createAccount(payload: CreateAccountPayload) { return instance.post(url, payload) } +/** + * Get Account By Id + * @param {String} accountId + */ +function getAccountById(accountId: string) { + const url = `/v1/wires/${accountId}` + + return instance.get(url) +} + export default { getInstance, createAccount, + getAccountById, } diff --git a/lib/accountsTestData.ts b/lib/accountsTestData.ts index 1d79f4cb..9dc5c561 100644 --- a/lib/accountsTestData.ts +++ b/lib/accountsTestData.ts @@ -2,18 +2,18 @@ export const exampleAccounts = [ { title: 'Test Data', formData: { - beneficiaryName: 'Test User 1', + beneficiaryName: 'Satoshi Nakamoto', bankName: 'WELLS FARGO BANK', accountNumber: '11111111111', bankIdentifier: '121000248', billingDetails: { - name: 'Test User 1', - city: 'City', + name: 'Satoshi Nakamoto', + city: 'Boston', country: 'US', - line1: 'Address1', - line2: 'Address2', - district: 'CA', - postalCode: '11111', + line1: '100 Money Street', + line2: 'Suite 1', + district: 'MA', + postalCode: '01234', }, bankAddress: { city: 'SAN FRANCISCO', diff --git a/pages/debug/index.vue b/pages/debug/index.vue index 1567c2e3..815cbb7c 100644 --- a/pages/debug/index.vue +++ b/pages/debug/index.vue @@ -152,21 +152,6 @@

- - -

Accounts endpoints

- Requires: api key -

-

- Api endpoints to manage wire accounts. -

-

- POST - - Create wire account - -

-
diff --git a/pages/debug/accounts/create.vue b/pages/debug/wires/create.vue similarity index 100% rename from pages/debug/accounts/create.vue rename to pages/debug/wires/create.vue diff --git a/pages/debug/wires/details.vue b/pages/debug/wires/details.vue new file mode 100644 index 00000000..da58e87e --- /dev/null +++ b/pages/debug/wires/details.vue @@ -0,0 +1,83 @@ + + + diff --git a/pages/debug/wires/index.vue b/pages/debug/wires/index.vue new file mode 100644 index 00000000..03e3920d --- /dev/null +++ b/pages/debug/wires/index.vue @@ -0,0 +1,42 @@ + diff --git a/plugins/accountsApi.ts b/plugins/accountsApi.ts index 40c85203..ff4ebe63 100644 --- a/plugins/accountsApi.ts +++ b/plugins/accountsApi.ts @@ -4,6 +4,7 @@ declare module 'vue/types/vue' { interface Vue { $accountsApi: { createAccount: (payload: CreateAccountPayload) => any + getAccountById: any getInstance: any } } From 35edf69d5122aaddf3b9216aa3d1ecb0998fbb48 Mon Sep 17 00:00:00 2001 From: Tarun Kumar Date: Tue, 23 Jun 2020 07:33:52 -0400 Subject: [PATCH 3/3] Updating the account to wires --- layouts/default.vue | 45 ++++--------------- lib/{accountsApi.ts => wiresApi.ts} | 14 +++--- lib/{accountsTestData.ts => wiresTestData.ts} | 2 +- nuxt.config.js | 2 +- pages/debug/index.vue | 26 +++++++++++ pages/debug/wallets/transfers/create.vue | 1 - pages/debug/wires/create.vue | 13 +++--- pages/debug/wires/details.vue | 2 +- pages/debug/wires/index.vue | 42 ----------------- plugins/{accountsApi.ts => wiresApi.ts} | 12 ++--- 10 files changed, 56 insertions(+), 103 deletions(-) rename lib/{accountsApi.ts => wiresApi.ts} (84%) rename lib/{accountsTestData.ts => wiresTestData.ts} (94%) delete mode 100644 pages/debug/wires/index.vue rename plugins/{accountsApi.ts => wiresApi.ts} (75%) diff --git a/layouts/default.vue b/layouts/default.vue index 9d559536..e358c6a0 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -112,32 +112,6 @@ - - - - - - - - Overview - - - - - - - - - - @@ -299,6 +273,14 @@ export default class DefaultLayoutsClass extends Vue { title: 'GET /settlements/{id}', to: '/debug/settlements/details', }, + { + title: 'GET /wires/{id}', + to: '/debug/wires/details', + }, + { + title: 'POST /wires', + to: '/debug/wires/create', + }, ] walletsLinks = [ @@ -336,17 +318,6 @@ export default class DefaultLayoutsClass extends Vue { }, ] - wiresLink = [ - { - title: 'GET /wires/{id}', - to: '/debug/wires/details', - }, - { - title: 'POST /wires', - to: '/debug/wires/create', - }, - ] - miniVariant = false right = true showRightDrawer = false diff --git a/lib/accountsApi.ts b/lib/wiresApi.ts similarity index 84% rename from lib/accountsApi.ts rename to lib/wiresApi.ts index 3e41bc7d..d22b36a4 100644 --- a/lib/accountsApi.ts +++ b/lib/wiresApi.ts @@ -3,7 +3,7 @@ import axios from 'axios' import { getAPIHostname } from './apiTarget' -export interface CreateAccountPayload { +export interface CreateWireAccountPayload { idempotencyKey: string beneficiaryName: string bankName: string @@ -59,19 +59,19 @@ function getInstance() { } /** - * Create Account + * Create Wire Account * @param {*} payload (contains form data) */ -function createAccount(payload: CreateAccountPayload) { +function createWireAccount(payload: CreateWireAccountPayload) { const url = '/v1/wires' return instance.post(url, payload) } /** - * Get Account By Id + * Get Wire Account By Id * @param {String} accountId */ -function getAccountById(accountId: string) { +function getWireAccountById(accountId: string) { const url = `/v1/wires/${accountId}` return instance.get(url) @@ -79,6 +79,6 @@ function getAccountById(accountId: string) { export default { getInstance, - createAccount, - getAccountById, + createWireAccount, + getWireAccountById, } diff --git a/lib/accountsTestData.ts b/lib/wiresTestData.ts similarity index 94% rename from lib/accountsTestData.ts rename to lib/wiresTestData.ts index 9dc5c561..ce3ba3d0 100644 --- a/lib/accountsTestData.ts +++ b/lib/wiresTestData.ts @@ -1,4 +1,4 @@ -export const exampleAccounts = [ +export const exampleWireAccounts = [ { title: 'Test Data', formData: { diff --git a/nuxt.config.js b/nuxt.config.js index 19e53882..cc70ea79 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -44,7 +44,7 @@ export default { '~/plugins/walletsApi', '~/plugins/transfersApi', '~/plugins/addressesApi', - '~/plugins/accountsApi', + '~/plugins/wiresApi', ], /* ** Nuxt.js dev-modules diff --git a/pages/debug/index.vue b/pages/debug/index.vue index 815cbb7c..774032a2 100644 --- a/pages/debug/index.vue +++ b/pages/debug/index.vue @@ -152,6 +152,32 @@

+ + +

Wires endpoints

+ Requires: api key +

+

+ Api endpoints to manage wire accounts. +

+

+ GET + + Get wire account details by id + +

+

+ POST + + Create wire account + +

+
diff --git a/pages/debug/wallets/transfers/create.vue b/pages/debug/wallets/transfers/create.vue index 1b3f128a..b49283af 100644 --- a/pages/debug/wallets/transfers/create.vue +++ b/pages/debug/wallets/transfers/create.vue @@ -144,7 +144,6 @@ export default class CreateTransferClass extends Vue { try { const res = await this.$walletsApi.getMasterWallet() - console.log(res) if (res.payments.masterWalletId) { this.formData.source.id = res.payments.masterWalletId } diff --git a/pages/debug/wires/create.vue b/pages/debug/wires/create.vue index d7bc74bd..38e272c6 100644 --- a/pages/debug/wires/create.vue +++ b/pages/debug/wires/create.vue @@ -143,8 +143,8 @@ import { Component, Vue } from 'nuxt-property-decorator' import { mapGetters } from 'vuex' import { v4 as uuidv4 } from 'uuid' import { getLive } from '@/lib/apiTarget' -import { exampleAccounts } from '@/lib/accountsTestData' -import { CreateAccountPayload } from '@/lib/accountsApi' +import { exampleWireAccounts } from '@/lib/wiresTestData' +import { CreateWireAccountPayload } from '@/lib/wiresApi' import RequestInfo from '@/components/RequestInfo.vue' import ErrorSheet from '@/components/ErrorSheet.vue' @Component({ @@ -192,7 +192,7 @@ export default class CreateCardClass extends Vue { required: (v: string) => !!v || 'Field is required', } - prefillItems = exampleAccounts + prefillItems = exampleWireAccounts error = {} loading = false showError = false @@ -208,18 +208,17 @@ export default class CreateCardClass extends Vue { } prefillForm(index: number) { - console.log(exampleAccounts[index]) - this.formData = exampleAccounts[index].formData + this.formData = exampleWireAccounts[index].formData } async makeApiCall() { this.loading = true - const payload: CreateAccountPayload = { + const payload: CreateWireAccountPayload = { idempotencyKey: uuidv4(), ...this.formData, } try { - await this.$accountsApi.createAccount(payload) + await this.$wiresApi.createWireAccount(payload) } catch (error) { this.error = error this.showError = true diff --git a/pages/debug/wires/details.vue b/pages/debug/wires/details.vue index da58e87e..ca7f2412 100644 --- a/pages/debug/wires/details.vue +++ b/pages/debug/wires/details.vue @@ -71,7 +71,7 @@ export default class FetchAccountDetailsClass extends Vue { this.loading = true try { - await this.$accountsApi.getAccountById(this.formData.accountId) + await this.$wiresApi.getWireAccountById(this.formData.accountId) } catch (error) { this.error = error this.showError = true diff --git a/pages/debug/wires/index.vue b/pages/debug/wires/index.vue deleted file mode 100644 index 03e3920d..00000000 --- a/pages/debug/wires/index.vue +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/plugins/accountsApi.ts b/plugins/wiresApi.ts similarity index 75% rename from plugins/accountsApi.ts rename to plugins/wiresApi.ts index ff4ebe63..ad4a1248 100644 --- a/plugins/accountsApi.ts +++ b/plugins/wiresApi.ts @@ -1,17 +1,17 @@ -import accountsApi, { CreateAccountPayload } from '@/lib/accountsApi' +import wiresApi, { CreateWireAccountPayload } from '@/lib/wiresApi' declare module 'vue/types/vue' { interface Vue { - $accountsApi: { - createAccount: (payload: CreateAccountPayload) => any - getAccountById: any + $wiresApi: { + createWireAccount: (payload: CreateWireAccountPayload) => any + getWireAccountById: any getInstance: any } } } export default ({ store }: any, inject: any) => { - const instance = accountsApi.getInstance() + const instance = wiresApi.getInstance() instance.interceptors.request.use( function (config) { @@ -39,5 +39,5 @@ export default ({ store }: any, inject: any) => { } ) - inject('accountsApi', accountsApi) + inject('wiresApi', wiresApi) }