OSDN Git Service

697a14d112d2190273d5a09225d0058f501cc478
[bytom/bytom-dashboard.git] / src / sdk / client.js
1 const Connection = require('./connection')
2 const authorizationGrantsAPI = require('./api/authorizationGrants')
3 const accessTokensAPI = require('./api/accessTokens')
4 const accountsAPI = require('./api/accounts')
5 const assetsAPI = require('./api/assets')
6 const balancesAPI = require('./api/balances')
7 const bytomCLI = require('./api/bytomCLI')
8 const configAPI = require('./api/config')
9 const hsmSigner = require('./api/hsmSigner')
10 const mockHsmKeysAPI = require('./api/mockHsmKeys')
11 const transactionsAPI = require('./api/transactions')
12 const transactionFeedsAPI = require('./api/transactionFeeds')
13 const unspentOutputsAPI = require('./api/unspentOutputs')
14
15 class Client {
16   constructor(opts = {}) {
17     // If the first argument is a string,
18     // support the deprecated constructor params.
19     if (typeof opts === 'string') {
20       opts = {
21         url: arguments[0],
22         accessToken: arguments[1] || ''
23       }
24     }
25     opts.url = opts.url || 'http://localhost:9888'
26     this.connection = new Connection(opts.url, opts.accessToken, opts.agent)
27     this.signer = new hsmSigner()
28
29     this.accessTokens = accessTokensAPI(this)
30
31     this.authorizationGrants = authorizationGrantsAPI(this)
32
33     this.accounts = accountsAPI(this)
34
35     this.assets = assetsAPI(this)
36
37     this.balances = balancesAPI(this)
38
39     this.bytomCli = bytomCLI(this)
40
41     this.config = configAPI(this)
42
43     this.mockHsm = {
44       keys: mockHsmKeysAPI(this),
45       signerConnection: new Connection(`${opts.url}/mockhsm`, opts.accessToken, opts.agent)
46     }
47
48     this.transactions = transactionsAPI(this)
49
50     this.transactionFeeds = transactionFeedsAPI(this)
51
52     this.unspentOutputs = unspentOutputsAPI(this)
53   }
54
55
56   request(path, body = {}, skipSnakeize = false) {
57     return this.connection.request(path, body, skipSnakeize)
58   }
59 }
60
61 module.exports = Client