You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.9 KiB
50 lines
1.9 KiB
2 years ago
|
/* Copyright 2018-2018 University Corporation for Atmospheric
|
||
|
Research/Unidata. */
|
||
|
/**
|
||
|
* Header file for dhttp.c
|
||
|
* @author Dennis Heimbigner
|
||
|
*/
|
||
|
|
||
|
#ifndef NCHTTP_H
|
||
|
#define NCHTTP_H
|
||
|
|
||
|
typedef enum HTTPMETHOD {
|
||
|
HTTPNONE=0, HTTPGET=1, HTTPPUT=2, HTTPPOST=3, HTTPHEAD=4, HTTPDELETE=5
|
||
|
} HTTPMETHOD;
|
||
|
|
||
|
struct CURL; /* Forward */
|
||
|
|
||
|
typedef struct NC_HTTP_STATE {
|
||
|
struct CURL* curl;
|
||
|
long httpcode;
|
||
|
struct Response {
|
||
|
NClist* headset; /* which headers to capture */
|
||
|
NClist* headers; /* Set of captured headers */
|
||
|
NCbytes* buf; /* response content; call owns; do not free */
|
||
|
} response;
|
||
|
struct Request {
|
||
|
HTTPMETHOD method;
|
||
|
size_t payloadsize;
|
||
|
void* payload; /* caller owns; do not free */
|
||
|
size_t payloadpos;
|
||
|
NClist* headers;
|
||
|
} request;
|
||
|
char errbuf[1024]; /* assert(CURL_ERROR_SIZE <= 1024) */
|
||
|
} NC_HTTP_STATE;
|
||
|
|
||
|
extern int nc_http_init(NC_HTTP_STATE** state);
|
||
|
extern int nc_http_init_verbose(NC_HTTP_STATE** state, int verbose);
|
||
|
extern int nc_http_size(NC_HTTP_STATE* state, const char* url, long long* sizep);
|
||
|
extern int nc_http_read(NC_HTTP_STATE* state, const char* url, size64_t start, size64_t count, NCbytes* buf);
|
||
|
extern int nc_http_write(NC_HTTP_STATE* state, const char* url, NCbytes* payload);
|
||
|
extern int nc_http_close(NC_HTTP_STATE* state);
|
||
|
extern int nc_http_reset(NC_HTTP_STATE* state);
|
||
|
extern int nc_http_set_method(NC_HTTP_STATE* state, HTTPMETHOD method);
|
||
|
extern int nc_http_set_response(NC_HTTP_STATE* state, NCbytes* buf);
|
||
|
extern int nc_http_set_payload(NC_HTTP_STATE* state, size_t len, void* payload);
|
||
|
extern int nc_http_response_headset(NC_HTTP_STATE* state, const NClist* headers); /* Set of headers to capture */
|
||
|
extern int nc_http_response_headers(NC_HTTP_STATE* state, NClist** headersp); /* set of captured headers */
|
||
|
extern int nc_http_request_setheaders(NC_HTTP_STATE* state, const NClist* headers); /* set of extra request headers */
|
||
|
|
||
|
#endif /*NCHTTP_H*/
|