package info.blockchain.wallet.ui; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import piuk.blockchain.android.R; import com.google.bitcoin.params.MainNetParams; import com.google.bitcoin.uri.BitcoinURI; import com.google.bitcoin.uri.BitcoinURIParseException; import com.google.bitcoin.core.Address; import com.google.bitcoin.core.AddressFormatException; import com.google.bitcoin.core.NetworkParameters; import com.google.bitcoin.core.WrongNetworkException; import android.util.Log; import android.util.Patterns; public class BitcoinAddressCheck { private BitcoinAddressCheck() { ; } public static String validate(final String btcaddress) { if(isValidAddress(btcaddress)) { return btcaddress; } else { String address = clean(btcaddress); if(address != null) { return address; } else { return null; } } } private static String clean(final String btcaddress) { String ret = null; BitcoinURI uri = null; try { uri = new BitcoinURI(btcaddress); ret = uri.getAddress().toString(); } catch(BitcoinURIParseException bupe) { ret = null; } return ret; } public static boolean isUri(final String s) { boolean ret = false; BitcoinURI uri = null; try { uri = new BitcoinURI(s); ret = true; } catch(BitcoinURIParseException bupe) { ret = false; } return ret; } public static String getUri(final String s) { String ret = null; BitcoinURI uri = null; try { uri = new BitcoinURI(s); ret = uri.toString(); } catch(BitcoinURIParseException bupe) { ret = null; } return ret; } public static String getAddress(final String s) { String ret = null; BitcoinURI uri = null; try { uri = new BitcoinURI(s); ret = uri.getAddress().toString(); } catch(BitcoinURIParseException bupe) { ret = null; } return ret; } public static String getAmount(final String s) { String ret = null; BitcoinURI uri = null; try { uri = new BitcoinURI(s); if(uri.getAmount() != null) { ret = uri.getAmount().toString(); } else { ret = "0.0000"; } } catch(BitcoinURIParseException bupe) { ret = null; } return ret; } public static boolean isValidAddress(final String btcaddress) { boolean ret = false; Address address = null; try { address = new Address(MainNetParams.get(), btcaddress); if(address != null) { ret = true; } } catch(WrongNetworkException wne) { ret = false; } catch(AddressFormatException afe) { ret = false; } return ret; } }