diff --git a/src/tokens/NFT.ts b/src/tokens/NFT.ts index 4c5d7545..505ba5a7 100644 --- a/src/tokens/NFT.ts +++ b/src/tokens/NFT.ts @@ -1166,4 +1166,15 @@ export class Nft { const data = await nftContract.methods.getData(key).call() return data } + + /** Gets data at a given `key` + * @param {String} nftAddress erc721 contract adress + * @param {String} id + * @return {Promise} The data stored at the key + */ + public async getTokenURI(nftAddress: string, id: number): Promise { + const nftContract = new this.web3.eth.Contract(this.nftAbi, nftAddress) + const data = await nftContract.methods.tokenURI(id).call() + return data + } } diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index 90270315..d62f75e6 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -78,6 +78,13 @@ describe('NFT', () => { nftAddress = await nftFactory.createNFT(nftOwner, nftData) nftDatatoken = new Nft(web3, ERC721Template.abi as AbiItem[]) + + }) + it('#getTokenURI', async ()=> { + const tokenURI = await nftDatatoken.getTokenURI(nftAddress,1) + assert(tokenURI === 'https://oceanprotocol.com/nft/' + ) + console.log(tokenURI) }) it('#createERC20 - should create a new ERC20 DT from NFT contract', async () => {