about summary refs log tree commit diff
path: root/misc/http_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'misc/http_client.h')
-rw-r--r--misc/http_client.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/misc/http_client.h b/misc/http_client.h
new file mode 100644
index 0000000..2d0c24a
--- /dev/null
+++ b/misc/http_client.h
@@ -0,0 +1,38 @@
+#ifndef BTPD_HTTP_CLIENT_H
+#define BTPD_HTTP_CLIENT_H
+
+struct http_response {
+    enum {
+        HTTP_T_ERR, HTTP_T_CODE, HTTP_T_HEADER, HTTP_T_DATA, HTTP_T_DONE
+    } type;
+    union {
+        int error;
+        int code;
+        struct {
+            char *n;
+            char *v;
+        } header;
+        struct {
+            size_t l;
+            char *p;
+        } data;
+    } v;
+};
+
+struct http_url {
+    char *host;
+    char *uri;
+    uint16_t port;
+};
+
+struct http_req;
+
+typedef void (*http_cb)(struct http_req *, struct http_response *, void *);
+
+struct http_url *http_url_parse(const char *url);
+void http_url_free(struct http_url *url);
+int http_get(struct http_req **out, const char *url, const char *hdrs,
+    http_cb cb, void *arg);
+void http_cancel(struct http_req *req);
+
+#endif