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.
This commit is contained in:
trueptolemy 2019-09-29 21:19:42 +08:00 committed by neil saitug
parent 8346d5c353
commit 75e946d256
6 changed files with 49 additions and 26 deletions

View File

@ -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();
}

View File

@ -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 */

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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)