|
@@ -0,0 +1,105 @@
|
|
|
+const Moralis = require("moralis/node");
|
|
|
+const logger = require("../logger");
|
|
|
+
|
|
|
+
|
|
|
+async function getNFTOwners(opts) {
|
|
|
+ logger.info('getNFTOwners', opts)
|
|
|
+ const options = {
|
|
|
+ address: opts.address,
|
|
|
+ chain: opts.chain,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ return await Moralis.Web3API.token.getNFTOwners(options);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('getNFTOwners error', error.toString(), JSON.stringify(options))
|
|
|
+ }
|
|
|
+ return null
|
|
|
+}
|
|
|
+
|
|
|
+async function getTokenIdMetadata(opts) {
|
|
|
+ logger.info('getNFTOwners', opts)
|
|
|
+ const options = {
|
|
|
+ address: opts.address,
|
|
|
+ token_id: opts.token_id,
|
|
|
+ chain: opts.chain,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ return await Moralis.Web3API.token.getTokenIdMetadata(options);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('getTokenIdMetadata', error.toString(), JSON.stringify(opts))
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+async function getNFTMetadata(opts) {
|
|
|
+ logger.info('getNFTMetadata', opts)
|
|
|
+ const options = {
|
|
|
+ address: opts.address,
|
|
|
+ chain: opts.chain,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ return await Moralis.Web3API.token.getNFTMetadata(options);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('getNFTOwners error', error.toString(), JSON.stringify(options))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function getAllTokenIds(opts) {
|
|
|
+ logger.info('getAllTokenIds', opts)
|
|
|
+ const options = {
|
|
|
+ address: opts.address,
|
|
|
+ chain: opts.chain,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ return await Moralis.Web3API.token.getAllTokenIds(options);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('getAllTokenIds error', error.toString(), JSON.stringify(options))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+async function enableWeb3(chainId, privateKey_) {
|
|
|
+ // Enable web3
|
|
|
+ await Moralis.enableWeb3({
|
|
|
+ chainId: chainId,
|
|
|
+ privateKey: privateKey_,
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+async function transferNft(opts) {
|
|
|
+ // sending a token with token id = 1
|
|
|
+ const options = {
|
|
|
+ type: opts.type,
|
|
|
+ receiver: opts.toAddress,
|
|
|
+ contractAddress: opts.tokenAddress,
|
|
|
+ tokenId: opts.tokenId,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ await enableWeb3(opts.chainId,opts.privateKey)
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('transferNft enableWeb3', error.toString(), JSON.stringify(options))
|
|
|
+ return {
|
|
|
+ code: -1,
|
|
|
+ errMsg: 'enableWeb3'+error.toString(),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ return await Moralis.transfer(options);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error('transferNft', error.toString(), JSON.stringify(options))
|
|
|
+ return {
|
|
|
+ code: -1,
|
|
|
+ errMsg: 'transfer'+error.toString(),
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ getNFTOwners,
|
|
|
+ getNFTMetadata,
|
|
|
+ getTokenIdMetadata,
|
|
|
+ getAllTokenIds,
|
|
|
+ transferNft,
|
|
|
+}
|