72 lines
2.5 KiB
Solidity
72 lines
2.5 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.23;
|
|
|
|
import {Script, console2} from "forge-std/Script.sol";
|
|
import { DappIndexer} from "src/DappIndexer.sol";
|
|
|
|
contract DappIndexerScript is Script {
|
|
DappIndexer public dappIdxr;
|
|
string[] public dappsURI;
|
|
|
|
function setUp() public {
|
|
dappIdxr = new DappIndexer(0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266,
|
|
0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266);
|
|
console2.log("The Dapps Indexer contract address is: ", address(dappIdxr));
|
|
dappsURI = vm.envString("dapps", ' ');
|
|
}
|
|
|
|
// run is the entry point
|
|
function run() public {
|
|
// startBroadcast and stopBraodcast will let us execute transactions anything between them
|
|
vm.startBroadcast();
|
|
// here we just need to deploy a new contractc
|
|
|
|
bytes32 CID1;
|
|
bytes32 CID2;
|
|
|
|
(CID1, CID2) = stringToBytes32Pair(dappsURI[0]);
|
|
|
|
// Add Dapp
|
|
console2.log("-----Adding Dapp-----");
|
|
console2.log("Bytes32 first:");
|
|
console2.logBytes32(CID1);
|
|
console2.log("Bytes32 second:");
|
|
console2.logBytes32(CID2);
|
|
console2.log(Bytes32PairToString(CID1, CID2));
|
|
dappIdxr.addDapp(bytes32("Dapp01"), DappIndexer.PackedCID(CID1, CID2));
|
|
|
|
// retrive Dapp
|
|
console2.log("-----retriving Dapp-----");
|
|
DappIndexer.PackedCID memory dapp1 = dappIdxr.getCID(bytes32("Dapp01"));
|
|
console2.log("Bytes32 first:");
|
|
console2.logBytes32(dapp1.CID1);
|
|
console2.log("Bytes32 second:");
|
|
console2.logBytes32(dapp1.CID2);
|
|
console2.log(Bytes32PairToString(dapp1.CID1, dapp1.CID2));
|
|
|
|
vm.stopBroadcast();
|
|
}
|
|
|
|
function Bytes32PairToString(bytes32 part1, bytes32 part2) public pure returns (string memory) {
|
|
// Concatenate the two bytes32 variables
|
|
bytes memory concatenatedBytes = abi.encodePacked(part1, part2);
|
|
|
|
// Convert the concatenated bytes to a string
|
|
string memory str = string(concatenatedBytes);
|
|
|
|
return str;
|
|
}
|
|
|
|
function stringToBytes32Pair(string memory source) public pure returns (bytes32 part1, bytes32 part2) {
|
|
bytes memory sourceBytes = bytes(source);
|
|
require(sourceBytes.length <= 64, "String must be less than or equal to 64 bytes");
|
|
|
|
assembly {
|
|
// Load the first 32 bytes of the string data
|
|
part1 := mload(add(sourceBytes, 32))
|
|
// Load the second 32 bytes of the string data
|
|
part2 := mload(add(sourceBytes, 64))
|
|
}
|
|
}
|
|
}
|