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 @@
+
+
+
+
+
+
+
+
+ Prefill form
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make api call
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ Wires APIs
+
+
+
+
+
+ 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 @@
+
+
+
+
+
+
+
+ Make api call
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ API viewer
+
+
+ Make api calls using your private api key. Explore payload and
+ response data in the UI.
+
+
+ Please use the settings panel on the right to configure your payments
+ api key.
+
+
+ (Caution: When using a production api key it will charge your card).
+
+
+
+
+ Accounts endpoints
+ Requires: api key
+
+
+ Api endpoints to manage wire accounts.
+
+
+ GET
+
+ Get wire account details by id
+
+
+
+ POST
+
+ Create wire account
+
+
+
+
+
+
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 @@
-
-
-
- Wires APIs
-
-
-
-
-
- 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 @@
-
-
-
-
- API viewer
-
-
- Make api calls using your private api key. Explore payload and
- response data in the UI.
-
-
- Please use the settings panel on the right to configure your payments
- api key.
-
-
- (Caution: When using a production api key it will charge your card).
-
-
-
-
- Accounts endpoints
- Requires: api key
-
-
- Api endpoints to manage wire accounts.
-
-
- GET
-
- Get wire account details by id
-
-
-
- POST
-
- Create wire account
-
-
-
-
-
-
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)
}