package com.msgilligan.namecoinj.rpc; import com.msgilligan.bitcoinj.rpc.BitcoinClient; import com.msgilligan.bitcoinj.rpc.JsonRPCStatusException; import com.msgilligan.bitcoinj.rpc.RPCConfig; import com.msgilligan.bitcoinj.rpc.bitcoind.AppDataDirectory; import com.msgilligan.bitcoinj.rpc.bitcoind.BitcoinConfFile; import com.msgilligan.namecoinj.core.NMCMainNetParams; import com.msgilligan.namecoinj.json.pojo.NameData; import org.bitcoinj.core.NetworkParameters; import java.io.File; import java.io.IOException; import java.net.URI; /** * Namecoin RPC client * See: https://wiki.namecoin.org/index.php?title=Client_API */ public class NamecoinClient extends BitcoinClient { public NamecoinClient(NetworkParameters netParams, URI server, String rpcuser, String rpcpassword) { super(netParams, server, rpcuser, rpcpassword); } public NamecoinClient(RPCConfig config) { this(config.getNetParams(), config.getURI(), config.getUsername(), config.getPassword()); } /** * name_show * * @param identifier namespace/name, e.g. 'd/beelin' * @return Data object * @throws IOException * @throws JsonRPCStatusException */ public NameData nameShow(String identifier) throws IOException, JsonRPCStatusException { return send("name_show", NameData.class, identifier); } /** * Read Namecoin conf file. Namecoin conf file uses same format as bitcoin.conf * @return object containing RPC endpoint information */ public static RPCConfig readConfig() { File file = new File(AppDataDirectory.forAppName("Namecoin"), "namecoin.conf"); BitcoinConfFile conf = new BitcoinConfFile(file); RPCConfig config = conf.read().getRPCConfig(); // Since config is immutable we have to make a new one with NameCoin parameters config = new RPCConfig(NMCMainNetParams.get(), config.getURI(), config.getUsername(), config.getPassword()); return config; } }