001package org.consensusj.namecoin.jsonrpc; 002 003import org.bitcoinj.base.Network; 004import org.bitcoinj.utils.AppDataDirectory; 005import org.consensusj.bitcoin.jsonrpc.BitcoinClient; 006import org.consensusj.jsonrpc.JsonRpcStatusException; 007import org.consensusj.bitcoin.jsonrpc.RpcConfig; 008import org.consensusj.bitcoin.jsonrpc.bitcoind.BitcoinConfFile; 009import org.consensusj.namecoin.jsonrpc.core.NMCMainNetParams; 010import org.consensusj.namecoin.jsonrpc.core.NameCoinNetwork; 011import org.consensusj.namecoin.jsonrpc.pojo.NameData; 012 013import java.io.File; 014import java.io.IOException; 015import java.net.URI; 016 017/** 018 * Namecoin RPC client 019 * See: https://wiki.namecoin.org/index.php?title=Client_API 020 */ 021public class NamecoinClient extends BitcoinClient { 022 public NamecoinClient(Network network, URI server, String rpcuser, String rpcpassword) { 023 super(network, server, rpcuser, rpcpassword); 024 } 025 026 public NamecoinClient(RpcConfig config) { 027 this(config.network(), config.getURI(), config.getUsername(), config.getPassword()); 028 } 029 030 /** 031 * name_show 032 * 033 * @param identifier namespace/name, e.g. 'd/beelin' 034 * @return Data object 035 * @throws IOException 036 * @throws JsonRpcStatusException 037 */ 038 public NameData nameShow(String identifier) throws IOException, JsonRpcStatusException { 039 return send("name_show", NameData.class, identifier); 040 } 041 042 /** 043 * Read Namecoin conf file. Namecoin conf file uses same format as bitcoin.conf 044 * @return object containing RPC endpoint information 045 */ 046 public static RpcConfig readConfig() { 047 File file = AppDataDirectory.getPath("Namecoin").resolve("namecoin.conf").toFile(); 048 BitcoinConfFile conf = new BitcoinConfFile(file); 049 RpcConfig config = conf.readWithFallback().getRPCConfig(); 050 // Since config is immutable we have to make a new one with NameCoin parameters 051 config = new RpcConfig(NameCoinNetwork.MAINNET, 052 config.getURI(), 053 config.getUsername(), 054 config.getPassword()); 055 return config; 056 } 057 058}