Browse Source

json: Move `param_bitcoin_address` from wallet/walletrpc.c to lightningd/json.c

It's a useful helper, and it will be used to prase address in `close` command.
travis-debug
trueptolemy 5 years ago
committed by neil saitug
parent
commit
75e946d256
  1. 26
      lightningd/json.c
  2. 6
      lightningd/json.h
  3. 7
      lightningd/test/run-invoice-select-inchan.c
  4. 3
      lightningd/test/run-jsonrpc.c
  5. 7
      wallet/test/run-wallet.c
  6. 26
      wallet/walletrpc.c

26
lightningd/json.c

@ -572,3 +572,29 @@ json_to_address_scriptpubkey(const tal_t *ctx,
return ADDRESS_PARSE_UNRECOGNIZED;
}
struct command_result *param_bitcoin_address(struct command *cmd,
const char *name,
const char *buffer,
const jsmntok_t *tok,
const u8 **scriptpubkey)
{
/* Parse address. */
switch (json_to_address_scriptpubkey(cmd,
get_chainparams(cmd->ld),
buffer, tok,
scriptpubkey)) {
case ADDRESS_PARSE_UNRECOGNIZED:
return command_fail(cmd, LIGHTNINGD,
"Could not parse destination address, "
"%s should be a valid address",
name ? name : "address field");
case ADDRESS_PARSE_WRONG_NETWORK:
return command_fail(cmd, LIGHTNINGD,
"Destination address is not on network %s",
get_chainparams(cmd->ld)->network_name);
case ADDRESS_PARSE_SUCCESS:
return NULL;
}
abort();
}

6
lightningd/json.h

@ -211,4 +211,10 @@ void json_add_time(struct json_stream *result, const char *fieldname,
void json_add_sha256(struct json_stream *result, const char *fieldname,
const struct sha256 *hash);
struct command_result *param_bitcoin_address(struct command *cmd,
const char *name,
const char *buffer,
const jsmntok_t *tok,
const u8 **scriptpubkey);
#endif /* LIGHTNING_LIGHTNINGD_JSON_H */

7
lightningd/test/run-invoice-select-inchan.c

@ -609,6 +609,13 @@ struct txowatch *watch_txo(const tal_t *ctx UNNEEDED,
size_t input_num UNNEEDED,
const struct block *block))
{ fprintf(stderr, "watch_txo called!\n"); abort(); }
/* Generated stub for param_bitcoin_address */
struct command_result *param_bitcoin_address(struct command *cmd UNNEEDED,
const char *name UNNEEDED,
const char *buffer UNNEEDED,
const jsmntok_t *tok UNNEEDED,
const u8 **scriptpubkey UNNEEDED)
{ fprintf(stderr, "param_bitcoin_address called!\n"); abort(); }
/* AUTOGENERATED MOCKS END */
#if DEVELOPER

3
lightningd/test/run-jsonrpc.c

@ -99,6 +99,9 @@ struct command_result *param_tok(struct command *cmd UNNEEDED, const char *name
const char *buffer UNNEEDED, const jsmntok_t * tok UNNEEDED,
const jsmntok_t **out UNNEEDED)
{ fprintf(stderr, "param_tok called!\n"); abort(); }
/* Generated stub for get_chainparams */
const struct chainparams *get_chainparams(const struct lightningd *ld UNNEEDED)
{ fprintf(stderr, "get_chainparams called!\n"); abort(); }
/* AUTOGENERATED MOCKS END */
bool deprecated_apis;

7
wallet/test/run-wallet.c

@ -608,6 +608,13 @@ struct txowatch *watch_txo(const tal_t *ctx UNNEEDED,
size_t input_num UNNEEDED,
const struct block *block))
{ fprintf(stderr, "watch_txo called!\n"); abort(); }
/* Generated stub for param_bitcoin_address */
struct command_result *param_bitcoin_address(struct command *cmd UNNEEDED,
const char *name UNNEEDED,
const char *buffer UNNEEDED,
const jsmntok_t *tok UNNEEDED,
const u8 **scriptpubkey UNNEEDED)
{ fprintf(stderr, "param_bitcoin_address called!\n"); abort(); }
/* AUTOGENERATED MOCKS END */
#if DEVELOPER

26
wallet/walletrpc.c

@ -73,32 +73,6 @@ static void wallet_withdrawal_broadcast(struct bitcoind *bitcoind UNUSED,
}
}
static struct command_result *param_bitcoin_address(struct command *cmd,
const char *name,
const char *buffer,
const jsmntok_t *tok,
const u8 **scriptpubkey)
{
/* Parse address. */
switch (json_to_address_scriptpubkey(cmd,
get_chainparams(cmd->ld),
buffer, tok,
scriptpubkey)) {
case ADDRESS_PARSE_UNRECOGNIZED:
return command_fail(cmd, LIGHTNINGD,
"Could not parse destination address, "
"%s should be a valid address",
name ? name : "address field");
case ADDRESS_PARSE_WRONG_NETWORK:
return command_fail(cmd, LIGHTNINGD,
"Destination address is not on network %s",
get_chainparams(cmd->ld)->network_name);
case ADDRESS_PARSE_SUCCESS:
return NULL;
}
abort();
}
/* Signs the tx, broadcasts it: broadcast calls wallet_withdrawal_broadcast */
static struct command_result *broadcast_and_wait(struct command *cmd,
struct unreleased_tx *utx)

Loading…
Cancel
Save