aboutsummaryrefslogtreecommitdiffhomepage
path: root/docs/fetch-default.example.c
diff options
context:
space:
mode:
Diffstat (limited to 'docs/fetch-default.example.c')
-rw-r--r--docs/fetch-default.example.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/docs/fetch-default.example.c b/docs/fetch-default.example.c
new file mode 100644
index 0000000..89619a0
--- /dev/null
+++ b/docs/fetch-default.example.c
@@ -0,0 +1,52 @@
+#include <libsparklepaw/transport.h>
+#include <stdio.h>
+
+int main(int argc, char** argv) {
+ // key for my example zone, replace it with one you can test against
+ uint8_t key[0x20] = {
+ 0xc5, 0x82, 0x1e, 0x05, 0x34, 0x80, 0x17, 0x25,
+ 0x3c, 0xfc, 0x80, 0x87, 0x0b, 0xca, 0x03, 0xed,
+ 0x0a, 0x8b, 0x93, 0xbc, 0x33, 0x58, 0x33, 0x9e,
+ 0x7e, 0xee, 0x44, 0x08, 0xff, 0xfd, 0x2c, 0x2d
+ };
+
+ struct sprkl_request* req = sprkl_request_make_fetchservice(
+ SPRKL_SIGALGO_ED25519, key, 0
+ );
+
+ struct sprkl_transport t;
+ int err = sprkl_transport_make_default(&t);
+ if (err == -1) {
+ fprintf(stderr, "error: no default transport is available\n");
+ return err;
+ } else if (err) {
+ fprintf(stderr, "make transport error: %s\n", sprkl_transport_strerror(&t, err));
+ return err;
+ }
+
+ err = sprkl_transport_sendrequest(&t, req);
+ if (err) {
+ fprintf(stderr, "req error: %s\n", sprkl_transport_strerror(&t, err));
+ return err;
+ }
+
+ struct sprkl_response resp;
+ resp.verb = req->verb;
+ err = sprkl_transport_recvresponse(&t, &resp);
+ if (err) {
+ fprintf(stderr, "resp error: %s\n", sprkl_transport_strerror(&t, err));
+ return err;
+ }
+
+ sprkl_transport_fini_default(&t);
+
+ fprintf(stderr, "response status code is %x\n", resp.status);
+ if (resp.status != SPRKL_STATUS_OK) {
+ fprintf(stderr, "server said: %*s\n", resp.errmsgsz, resp.errmsg);
+ } else {
+ sprkl_service_printdebug(resp.fetchsvc.svc, stdout);
+ }
+
+ sprkl_response_freeparts(&resp, true);
+ sprkl_request_freeall(req);
+}