mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-21 14:24:09 +01:00
common: Add some more JSON primitives
We were missing the `short_channel_id_dir` helpers.
This commit is contained in:
parent
8e9f71ff85
commit
eae378c9d2
5 changed files with 40 additions and 21 deletions
|
@ -5,7 +5,6 @@
|
|||
#include <bitcoin/privkey.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/pubkey.h>
|
||||
#include <bitcoin/short_channel_id.h>
|
||||
#include <bitcoin/tx.h>
|
||||
#include <ccan/json_escape/json_escape.h>
|
||||
#include <ccan/mem/mem.h>
|
||||
|
@ -574,6 +573,25 @@ bool json_to_short_channel_id(const char *buffer, const jsmntok_t *tok,
|
|||
tok->end - tok->start, scid));
|
||||
}
|
||||
|
||||
bool json_to_short_channel_id_dir(const char *buffer, const jsmntok_t *tok,
|
||||
struct short_channel_id_dir *scidd)
|
||||
{
|
||||
jsmntok_t scidtok, numtok;
|
||||
u32 dir;
|
||||
|
||||
if (!split_tok(buffer, tok, '/', &scidtok, &numtok))
|
||||
return false;
|
||||
|
||||
if (!json_to_short_channel_id(buffer, &scidtok, &scidd->scid))
|
||||
return false;
|
||||
|
||||
if (!json_to_u32(buffer, &numtok, &dir) || (dir > 1))
|
||||
return false;
|
||||
|
||||
scidd->dir = dir;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool json_to_txid(const char *buffer, const jsmntok_t *tok,
|
||||
struct bitcoin_txid *txid)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef LIGHTNING_COMMON_JSON_PARSE_H
|
||||
#define LIGHTNING_COMMON_JSON_PARSE_H
|
||||
#include "config.h"
|
||||
#include <bitcoin/short_channel_id.h>
|
||||
#include <ccan/crypto/sha256/sha256.h>
|
||||
#include <common/coin_mvt.h>
|
||||
#include <common/errcode.h>
|
||||
|
@ -110,6 +111,10 @@ bool json_to_outpoint(const char *buffer, const jsmntok_t *tok,
|
|||
bool json_to_channel_id(const char *buffer, const jsmntok_t *tok,
|
||||
struct channel_id *cid);
|
||||
|
||||
/* Extract a channel id + dir from this */
|
||||
bool json_to_short_channel_id_dir(const char *buffer, const jsmntok_t *tok,
|
||||
struct short_channel_id_dir *scidd);
|
||||
|
||||
/* Extract a coin movement 'tag' from this */
|
||||
bool json_to_coin_mvt_tag(const char *buffer, const jsmntok_t *tok,
|
||||
enum mvt_tag *tag);
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include <bitcoin/preimage.h>
|
||||
#include <bitcoin/privkey.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/short_channel_id.h>
|
||||
#include <bitcoin/signature.h>
|
||||
#include <bitcoin/tx.h>
|
||||
#include <ccan/io/io.h>
|
||||
|
@ -485,6 +484,16 @@ void json_add_short_channel_id(struct json_stream *response,
|
|||
short_channel_id_outnum(scid));
|
||||
}
|
||||
|
||||
void json_add_short_channel_id_dir(struct json_stream *response,
|
||||
const char *fieldname,
|
||||
struct short_channel_id_dir scidd)
|
||||
{
|
||||
json_add_str_fmt(response, fieldname, "%dx%dx%d/%d",
|
||||
short_channel_id_blocknum(scidd.scid),
|
||||
short_channel_id_txnum(scidd.scid),
|
||||
short_channel_id_outnum(scidd.scid), scidd.dir);
|
||||
}
|
||||
|
||||
static void json_add_address_fields(struct json_stream *response,
|
||||
const struct wireaddr *addr,
|
||||
const char *typefield)
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#define LIGHTNING_COMMON_JSON_STREAM_H
|
||||
#include "config.h"
|
||||
|
||||
#include <bitcoin/short_channel_id.h>
|
||||
#define JSMN_STRICT 1
|
||||
# include <external/jsmn/jsmn.h>
|
||||
|
||||
|
@ -313,6 +314,11 @@ void json_add_short_channel_id(struct json_stream *response,
|
|||
const char *fieldname,
|
||||
struct short_channel_id id);
|
||||
|
||||
/* '"fieldname" : "1234:5:6/1"' */
|
||||
void json_add_short_channel_id_dir(struct json_stream *response,
|
||||
const char *fieldname,
|
||||
struct short_channel_id_dir idd);
|
||||
|
||||
/* JSON serialize a network address for a node */
|
||||
void json_add_address(struct json_stream *response, const char *fieldname,
|
||||
const struct wireaddr *addr);
|
||||
|
|
|
@ -350,25 +350,6 @@ static struct command_result *currency_done(struct command *cmd,
|
|||
return maybe_add_path(cmd, offinfo);
|
||||
}
|
||||
|
||||
static bool json_to_short_channel_id_dir(const char *buffer, const jsmntok_t *tok,
|
||||
struct short_channel_id_dir *scidd)
|
||||
{
|
||||
jsmntok_t scidtok, numtok;
|
||||
u32 dir;
|
||||
|
||||
if (!split_tok(buffer, tok, '/', &scidtok, &numtok))
|
||||
return false;
|
||||
|
||||
if (!json_to_short_channel_id(buffer, &scidtok, &scidd->scid))
|
||||
return false;
|
||||
|
||||
if (!json_to_u32(buffer, &numtok, &dir) || (dir > 1))
|
||||
return false;
|
||||
|
||||
scidd->dir = dir;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool json_to_sciddir_or_pubkey(const char *buffer, const jsmntok_t *tok,
|
||||
struct sciddir_or_pubkey *sciddir_or_pubkey)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue