#pragma once #include #include "../util/buffer.h" #include "../loop.h" #include "curl.h" enum { NNWT_HTTP_HEAD = 0, NNWT_HTTP_GET, NNWT_HTTP_POST }; enum { NNWT_HTTP_READ = 0, NNWT_HTTP_WRITE, NNWT_HTTP_RESPONSE_CODE, NNWT_HTTP_CONTENT_LENGTH, NNWT_HTTP_REDIRECT, NNWT_HTTP_FINISHED, NNWT_HTTP_ERROR }; struct nn_http { struct nn_curl curl; long status_code; curl_off_t content_length; struct curl_slist *headers; void (*callback)(void *, u8, u8 *, void *); void *userdata; }; struct nn_http_request { struct nn_http http; size_t pointer; struct nn_buffer payload; struct nn_buffer response; void (*callback)(void *, struct nn_http_request *, bool); void *userdata; }; bool nn_http_init(struct nn_http *http); void nn_http_set_url(struct nn_http *http, str *url); void nn_http_set_user_agent(struct nn_http *http, str *user_agent); void nn_http_add_header(struct nn_http *http, str *header); void nn_http_set_range(struct nn_http *http, size_t start, size_t end); void nn_http_close(struct nn_http *http); bool nn_http_request_stream(struct nn_http *http, u8 method, struct nn_event_loop *loop, void (*callback)(void *, u8, u8 *, void *), void *userdata); bool nn_http_request_init(struct nn_http_request *request); bool nn_http_request(struct nn_http_request *request, u8 method, struct nn_event_loop *loop, void (*callback)(void *, struct nn_http_request *, bool), void *userdata); void nn_http_request_close(struct nn_http_request *request);