/
NFTService.js
81 lines (72 loc) · 1.77 KB
/
NFTService.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const axios = require('axios')
const { BASE_URL } = require('./constants')
const getHeaders = (apiKey, others = {}) => ({
headers: { 'X-API-KEY': apiKey, ...others }
})
const addParams = (params) => ({
params: { ...params }
})
class NFTService {
constructor () {
this.lrcClient = axios.create({ baseURL: `${BASE_URL}/api/v3` })
}
// Used for testing only
async getRelayersCurrentTIme () {
const res = await this.lrcClient.get(
'/timestamp'
)
return res.data
}
async getTokenAddress (apiKey, { nftOwner, nftFactory, nftBaseUri = '' }) {
const res = await this.lrcClient.get(
'/nft/info/computeTokenAddress',
{
...getHeaders(apiKey),
...addParams({
nftOwner,
nftFactory,
nftBaseUri
})
}
)
return res.data
}
async getNextStorageId (apiKey, { accountId, maxFeeTokenId }) {
const res = await this.lrcClient.get(
'/storageId',
{
...getHeaders(apiKey),
...addParams({
accountId,
sellTokenId: maxFeeTokenId
})
}
)
return res.data
}
async getOffChainFee (apiKey, { accountId, tokenAddress, requestType = 9 }) {
const res = await this.lrcClient.get(
'/user/nft/offchainFee',
{
...getHeaders(apiKey),
...addParams({
accountId,
requestType,
tokenAddress
})
}
)
return res.data
}
async mintNFT (apiKey, body) {
const res = await this.lrcClient.post(
'/nft/mint',
body, // request body,
getHeaders(apiKey, {
'Content-Type': 'application/json'
})
)
return res.data
}
}
module.exports = NFTService