Exemplo n.º 1
0
    @Override
    public void parse() {
      if (input.startsWith("bitcoin:")) {
        try {
          final BitcoinURI bitcoinUri = new BitcoinURI(null, input);
          final Address address = bitcoinUri.getAddress();
          final String addressLabel = bitcoinUri.getLabel();
          final BigInteger amount = bitcoinUri.getAmount();
          final String bluetoothMac =
              (String) bitcoinUri.getParameterByName(Bluetooth.MAC_URI_PARAM);

          bitcoinRequest(address, addressLabel, amount, bluetoothMac);
        } catch (final BitcoinURIParseException x) {
          error(R.string.input_parser_invalid_bitcoin_uri, input);
        }
      } else if (PATTERN_BITCOIN_ADDRESS.matcher(input).matches()) {
        try {
          final Address address = new Address(Constants.NETWORK_PARAMETERS, input);

          bitcoinRequest(address, null, null, null);
        } catch (final AddressFormatException x) {
          error(R.string.input_parser_invalid_address);
        }
      } else if (PATTERN_PRIVATE_KEY.matcher(input).matches()) {
        try {
          final ECKey key = new DumpedPrivateKey(Constants.NETWORK_PARAMETERS, input).getKey();
          final Address address = new Address(Constants.NETWORK_PARAMETERS, key.getPubKeyHash());

          bitcoinRequest(address, null, null, null);
        } catch (final AddressFormatException x) {
          error(R.string.input_parser_invalid_address);
        }
      } else if (PATTERN_TRANSACTION.matcher(input).matches()) {
        try {
          final Transaction tx =
              new Transaction(Constants.NETWORK_PARAMETERS, Qr.decodeBinary(input));

          directTransaction(tx);
        } catch (final IOException x) {
          error(R.string.input_parser_invalid_transaction, x.getMessage());
        } catch (final ProtocolException x) {
          error(R.string.input_parser_invalid_transaction, x.getMessage());
        }
      } else {
        cannotClassify(input);
      }
    }