non-fungible-apps/contracts/SitesNFTs.sol

35 lines
1.1 KiB
Solidity

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "base64-sol/base64.sol";
contract SitesNFTs is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("Fleek Sites NFTs", "SNFT") {}
// Token uri is the Base64 encoded json metadata
function mintNFT(string memory _tokenURI) public returns (uint256) {
uint256 newItemId = _tokenIds.current();
_safeMint(msg.sender, newItemId);
_setTokenURI(newItemId, _tokenURI);
_tokenIds.increment();
return newItemId;
}
function _htmlToImageURI(string memory html) internal pure returns (string memory) {
// text/html;charset=UTF-8,
string memory baseURL = "data:text/html;charset=UTF-8,";
return string(abi.encodePacked(baseURL, html));
}
function _baseURI() internal pure override returns (string memory) {
return "data:application/json;base64,";
}
}