Introduction
Introduction Statistics Contact Development Disclaimer Help
http.h - quark - quark web server
git clone git://git.suckless.org/quark
Log
Files
Refs
LICENSE
---
http.h (2072B)
---
1 /* See LICENSE file for copyright and license details. */
2 #ifndef HTTP_H
3 #define HTTP_H
4
5 #include <limits.h>
6 #include <sys/socket.h>
7
8 #include "config.h"
9 #include "server.h"
10 #include "util.h"
11
12 enum req_field {
13 REQ_HOST,
14 REQ_RANGE,
15 REQ_IF_MODIFIED_SINCE,
16 NUM_REQ_FIELDS,
17 };
18
19 extern const char *req_field_str[];
20
21 enum req_method {
22 M_GET,
23 M_HEAD,
24 NUM_REQ_METHODS,
25 };
26
27 extern const char *req_method_str[];
28
29 struct request {
30 enum req_method method;
31 char path[PATH_MAX];
32 char query[FIELD_MAX];
33 char fragment[FIELD_MAX];
34 char field[NUM_REQ_FIELDS][FIELD_MAX];
35 };
36
37 enum status {
38 S_OK = 200,
39 S_PARTIAL_CONTENT = 206,
40 S_MOVED_PERMANENTLY = 301,
41 S_NOT_MODIFIED = 304,
42 S_BAD_REQUEST = 400,
43 S_FORBIDDEN = 403,
44 S_NOT_FOUND = 404,
45 S_METHOD_NOT_ALLOWED = 405,
46 S_REQUEST_TIMEOUT = 408,
47 S_RANGE_NOT_SATISFIABLE = 416,
48 S_REQUEST_TOO_LARGE = 431,
49 S_INTERNAL_SERVER_ERROR = 500,
50 S_VERSION_NOT_SUPPORTED = 505,
51 };
52
53 extern const char *status_str[];
54
55 enum res_field {
56 RES_ACCEPT_RANGES,
57 RES_ALLOW,
58 RES_LOCATION,
59 RES_LAST_MODIFIED,
60 RES_CONTENT_LENGTH,
61 RES_CONTENT_RANGE,
62 RES_CONTENT_TYPE,
63 NUM_RES_FIELDS,
64 };
65
66 extern const char *res_field_str[];
67
68 enum res_type {
69 RESTYPE_DIRLISTING,
70 RESTYPE_ERROR,
71 RESTYPE_FILE,
72 NUM_RES_TYPES,
73 };
74
75 struct response {
76 enum res_type type;
77 enum status status;
78 char field[NUM_RES_FIELDS][FIELD_MAX];
79 char path[PATH_MAX];
80 char internal_path[PATH_MAX];
81 struct vhost *vhost;
82 struct {
83 size_t lower;
84 size_t upper;
85 } file;
86 };
87
88 enum status http_prepare_header_buf(const struct response *, struct buff…
89 enum status http_send_buf(int, struct buffer *);
90 enum status http_recv_header(int, struct buffer *, int *);
91 enum status http_parse_header(const char *, struct request *);
92 void http_prepare_response(const struct request *, struct response *,
93 const struct server *);
94 void http_prepare_error_response(const struct request *,
95 struct response *, enum status);
96
97 #endif /* HTTP_H */
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.