I have accounted for all of that 👆, for now.
To test run;
go build && ./snsGOSDK
The is the Js test of the library to corelate results.
import {clusterApiUrl, Connection, PublicKey} from "@solana/web3.js";
// @ts-ignore
import {getDomainKeySync, NameRegistryState, RecordVersion, reverseLookup, getHandleAndRegistryKey, getTwitterRegistry, getAllDomains, getDomainKeysWithReverses} from "@bonfida/spl-name-service";
async function createConnection() {
return new Connection(clusterApiUrl("mainnet-beta"));
}
const testOthers = async (rpcClient:Connection) => {
const rangeValues = ["bonfida.sol", "solana.sol", "01.sol", "dex.solana.sol", "dex.bonfida.sol", "wallet-guide-5.sol", "sub-0.wallet-guide-3.sol"];
for (const [index, domain] of rangeValues.entries()) {
console.log(`${index+1}). domain - ${domain}`);
console.log("*****GetDomainKeySync*****")
const {pubkey} = getDomainKeySync(domain, RecordVersion.V2);
console.log(`pubkey for "${domain} is"--- "${pubkey.toBase58()}"`);
try {
console.log("*****ReverseLookUp*****")
const reverse = await reverseLookup(rpcClient, pubkey);
console.log(`\nreverselookup for PublicKey --${pubkey} is = "${reverse}"`);
} catch (error) {
console.log(`Error from domain reverseLookup----: \n${error}`)
continue
}
try {
console.log("*****NameStateRegistry.Retrieve*****")
const {registry, nftOwner} = await NameRegistryState.retrieve(rpcClient, pubkey);
console.log(`Owner's PublicKey for domain ${domain} is "${registry.owner.toBase58()}"`);
if (nftOwner) {
console.log("nftOwner----- ", nftOwner.toBase58(), "\n");
}
} catch (error) {
console.log(`Error from domain NameRegistryState.retrieve----: \n${error}`)
continue
}
try {
console.log("*****GetAllDomains*****")
const {registry} = await NameRegistryState.retrieve(rpcClient, pubkey);
const domains = await getAllDomains(rpcClient, registry.owner);
console.log("All domains of ${registry.owner} ----->")
for (const domain of domains) {
console.log(`${domain.toBase58()}`)
}
} catch (error) {
console.log(`Error from domain getAllDomains----: \n${error}`)
continue
}
try {
console.log("*****getDomainKeysWithReverses*****")
const {registry, nftOwner} = await NameRegistryState.retrieve(rpcClient, pubkey);
const domainsWithReverses = await getDomainKeysWithReverses(rpcClient, registry.owner);
console.log("All domains of ${registry.owner} ----->")
for (const domain of domainsWithReverses) {
console.log(`${domain.pubKey} "--**********--" ${domain.domain}`)
}
} catch (error) {
console.log(`Error from domain getDomainKeysWithReverses----: \n${error}`)
continue
}
}}
const testTwitterResolving = async (rpcClient: Connection) => {
const rangeValues = ["oluwatobialone"];
for (const domain of rangeValues) {
console.log("\n")
const reg = await getTwitterRegistry(rpcClient, domain);
console.log(`public key associated to the Twitter handle @${domain}----`, reg.owner.toBase58());
const [handle] = await getHandleAndRegistryKey(rpcClient, reg.owner);
console.log(`Twitter handle associated to the public key ${domain} is----`, handle, "\n\n");
}
}
(async () => {
const conn = await createConnection();
await testOthers(conn);
await testTwitterResolving(conn);
})();