Skip to content

Commit 925e96d

Browse files
author
Jamie C. Driver
committed
client request: make existing http-request response more generic
1 parent 58962a0 commit 925e96d

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed

main/process/pinclient.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,13 @@ static void send_http_request_reply(jade_process_t* process, const char* documen
7272
JADE_ASSERT(data);
7373

7474
// Prepare request data
75-
data_request_t pin_data
76-
= { .method = "POST", .accept = "json", .on_reply = "pin", .strdata = data, .rawdata_len = 0, .num_urls = 0 };
75+
client_data_request_t pin_data = { .request_type = CLIENT_REQUEST_TYPE_HTTP,
76+
.method = "POST",
77+
.accept = "json",
78+
.on_reply = "pin",
79+
.strdata = data,
80+
.rawdata_len = 0,
81+
.num_urls = 0 };
7782

7883
// Add urls - bespoke pinserver urls or defaults if not set
7984
char buf[MAX_PINSVR_URL_LENGTH];
@@ -114,7 +119,7 @@ static void send_http_request_reply(jade_process_t* process, const char* documen
114119
}
115120

116121
// Send reply message
117-
jade_process_reply_to_message_result(process->ctx, &pin_data, http_request_reply);
122+
jade_process_reply_to_message_result(process->ctx, &pin_data, client_data_request_reply);
118123
}
119124

120125
// Hepler to tweak the server static key into a session key

main/process/process_utils.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@ void update_aggregate_scripts_flavour(
444444
}
445445
}
446446

447+
// eg:
447448
// {
448449
// "http_request": {
449450
// //
@@ -456,13 +457,13 @@ void update_aggregate_scripts_flavour(
456457
// }
457458
// "on-reply": `on_reply`
458459
// }
459-
void http_request_reply(const void* ctx, CborEncoder* container)
460+
void client_data_request_reply(const void* ctx, CborEncoder* container)
460461
{
461462
JADE_ASSERT(ctx);
462463
JADE_ASSERT(container);
463464

464-
const data_request_t* const request_data = (const data_request_t*)ctx;
465-
JADE_ASSERT(request_data->num_urls);
465+
const client_data_request_t* const request_data = (const client_data_request_t*)ctx;
466+
JADE_ASSERT(request_data->request_type);
466467
JADE_ASSERT(request_data->on_reply);
467468
// method, accept and certificate and data fields are optional, but some combinations may be nonsensical
468469
JADE_ASSERT(request_data->rawdata || !request_data->rawdata_len);
@@ -473,7 +474,10 @@ void http_request_reply(const void* ctx, CborEncoder* container)
473474

474475
JADE_ASSERT(!nested_json || !request_data->rawdata_len);
475476

476-
size_t num_params = 1; // urls
477+
size_t num_params = 0;
478+
if (request_data->num_urls) {
479+
++num_params;
480+
}
477481
if (request_data->method) {
478482
++num_params;
479483
}
@@ -491,8 +495,8 @@ void http_request_reply(const void* ctx, CborEncoder* container)
491495
CborError cberr = cbor_encoder_create_map(container, &root_map, 1);
492496
JADE_ASSERT(cberr == CborNoError);
493497

494-
// Envelope data for http request
495-
cberr = cbor_encode_text_stringz(&root_map, "http_request");
498+
// Envelope data for client request
499+
cberr = cbor_encode_text_stringz(&root_map, request_data->request_type);
496500
JADE_ASSERT(cberr == CborNoError);
497501

498502
CborEncoder http_encoder;
@@ -507,7 +511,9 @@ void http_request_reply(const void* ctx, CborEncoder* container)
507511
JADE_ASSERT(cberr == CborNoError);
508512

509513
// The urls (http/tls/onion)
510-
add_string_array_to_map(&params_encoder, "urls", (const char**)request_data->urls, request_data->num_urls);
514+
if (request_data->num_urls) {
515+
add_string_array_to_map(&params_encoder, "urls", (const char**)request_data->urls, request_data->num_urls);
516+
}
511517

512518
// Any additional root certificate that may be required
513519
if (request_data->certificate) {

main/process/process_utils.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ typedef struct {
3131

3232
#define MAX_REQUEST_URLS 2
3333

34+
#define CLIENT_REQUEST_TYPE_HTTP "http_request"
35+
3436
typedef struct {
3537
const char* urls[MAX_REQUEST_URLS];
38+
const char* request_type;
3639
const char* certificate;
3740
const char* method;
3841
const char* accept;
@@ -43,7 +46,7 @@ typedef struct {
4346
const char* on_reply;
4447
size_t rawdata_len; // zero implies may be char data
4548
uint8_t num_urls;
46-
} data_request_t;
49+
} client_data_request_t;
4750

4851
#define HAS_NO_CURRENT_MESSAGE(process) \
4952
(process && !process->ctx.cbor && !process->ctx.cbor_len && process->ctx.source == SOURCE_NONE)
@@ -138,7 +141,8 @@ bool params_get_bip85_rsa_key(CborValue* params, size_t* key_bits, size_t* index
138141
script_flavour_t get_script_flavour(const uint8_t* script, const size_t script_len, bool* is_p2tr);
139142
void update_aggregate_scripts_flavour(script_flavour_t new_script_flavour, script_flavour_t* aggregate_scripts_flavour);
140143

141-
// A message reply which is actually a request for more data from a resource
142-
void http_request_reply(const void* ctx, CborEncoder* container);
144+
// A message reply which is actually a request for more data from the client
145+
// 'ctx' should be a 'client_data_request_t' struct as above
146+
void client_data_request_reply(const void* ctx, CborEncoder* container);
143147

144148
#endif /* PROCESS_UTILS_H_ */

0 commit comments

Comments
 (0)