2009-04-22 15:25:41 -04:00
|
|
|
|
|
|
|
#ifndef __HTTPD_H__
|
|
|
|
#define __HTTPD_H__
|
|
|
|
|
2015-10-19 15:15:29 -04:00
|
|
|
#include <event2/http.h>
|
|
|
|
#include <event2/buffer.h>
|
2009-04-25 04:40:47 -04:00
|
|
|
|
2016-10-17 08:18:13 -04:00
|
|
|
enum httpd_send_flags
|
|
|
|
{
|
|
|
|
HTTPD_SEND_NO_GZIP = (1 << 0),
|
|
|
|
};
|
|
|
|
|
2009-04-25 04:40:47 -04:00
|
|
|
void
|
|
|
|
httpd_stream_file(struct evhttp_request *req, int id);
|
|
|
|
|
2016-10-17 17:08:02 -04:00
|
|
|
/*
|
|
|
|
* Gzips an evbuffer
|
|
|
|
*
|
|
|
|
* @in in Data to be compressed
|
|
|
|
* @return Compressed data - must be freed by caller
|
|
|
|
*/
|
2016-10-17 13:35:37 -04:00
|
|
|
struct evbuffer *
|
|
|
|
httpd_gzip_deflate(struct evbuffer *in);
|
|
|
|
|
2016-10-17 17:08:02 -04:00
|
|
|
/*
|
|
|
|
* This wrapper around evhttp_send_reply should be used whenever a request may
|
|
|
|
* come from a browser. It will automatically gzip if feasible, but the caller
|
|
|
|
* may direct it not to. It will set CORS headers as appropriate. Should be
|
|
|
|
* thread safe.
|
|
|
|
*
|
|
|
|
* @in req The evhttp request struct
|
|
|
|
* @in code HTTP code, e.g. 200
|
|
|
|
* @in reason A brief explanation of the error - if NULL the standard meaning
|
|
|
|
of the error code will be used
|
|
|
|
* @in evbuf Data for the response body
|
|
|
|
* @in flags See flags above
|
|
|
|
*/
|
2010-05-03 12:19:41 -04:00
|
|
|
void
|
2016-10-17 08:18:13 -04:00
|
|
|
httpd_send_reply(struct evhttp_request *req, int code, const char *reason, struct evbuffer *evbuf, enum httpd_send_flags flags);
|
2010-05-03 12:19:41 -04:00
|
|
|
|
2016-10-17 17:08:02 -04:00
|
|
|
/*
|
|
|
|
* This is a substitute for evhttp_send_error that should be used whenever an
|
|
|
|
* error may be returned to a browser. It will set CORS headers as appropriate,
|
|
|
|
* which is not possible with evhttp_send_error, because it clears the headers.
|
|
|
|
* Should be thread safe.
|
|
|
|
*
|
|
|
|
* @in req The evhttp request struct
|
|
|
|
* @in error HTTP code, e.g. 200
|
|
|
|
* @in reason A brief explanation of the error - if NULL the standard meaning
|
|
|
|
of the error code will be used
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
httpd_send_error(struct evhttp_request *req, int error, const char *reason);
|
|
|
|
|
2009-05-02 11:20:33 -04:00
|
|
|
char *
|
|
|
|
httpd_fixup_uri(struct evhttp_request *req);
|
|
|
|
|
2009-05-01 14:58:15 -04:00
|
|
|
int
|
|
|
|
httpd_basic_auth(struct evhttp_request *req, char *user, char *passwd, char *realm);
|
|
|
|
|
2009-04-22 15:25:41 -04:00
|
|
|
int
|
|
|
|
httpd_init(void);
|
|
|
|
|
|
|
|
void
|
|
|
|
httpd_deinit(void);
|
|
|
|
|
|
|
|
#endif /* !__HTTPD_H__ */
|