|
- #ifndef BTPD_HTTP_CLIENT_H
- #define BTPD_HTTP_CLIENT_H
-
- struct http_url {
- char *host;
- char *uri;
- uint16_t port;
- };
-
- struct http_url *http_url_parse(const char *url);
- void http_url_free(struct http_url *url);
-
- 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_req;
- typedef void (*http_cb_t)(struct http_req *, struct http_response *, void *);
-
- int http_get(struct http_req **out, const char *url, const char *hdrs,
- http_cb_t cb, void *arg);
- void http_cancel(struct http_req *req);
- struct http_url *http_url_get(struct http_req *req);
- int http_want_read(struct http_req *req);
- int http_want_write(struct http_req *req);
- int http_read(struct http_req *req, int sd);
- int http_write(struct http_req *req, int sd);
-
- #endif
|