feat: rename some structs
							parent
							
								
									fbba7a5a14
								
							
						
					
					
						commit
						421c5381e0
					
				|  | @ -18,7 +18,7 @@ | |||
|  * Internal representation of a header in a request, defined using offsets | ||||
|  * relative to the full buffer. | ||||
|  */ | ||||
| typedef struct lnm_http_req_iheader { | ||||
| typedef struct lnm_http_req_ihdr { | ||||
|   struct { | ||||
|     size_t o; | ||||
|     size_t len; | ||||
|  | @ -27,21 +27,7 @@ typedef struct lnm_http_req_iheader { | |||
|     size_t o; | ||||
|     size_t len; | ||||
|   } value; | ||||
| } lnm_http_req_iheader; | ||||
| 
 | ||||
| /**
 | ||||
|  * Represents an actual header value, with offsets already resolved. | ||||
|  */ | ||||
| typedef struct lnm_http_req_header { | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } name; | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } value; | ||||
| } lnm_http_req_header; | ||||
| } lnm_http_req_ihhr; | ||||
| 
 | ||||
| /**
 | ||||
|  * Represents the parsed HTTP request | ||||
|  | @ -64,7 +50,7 @@ typedef struct lnm_http_req { | |||
|     size_t len; | ||||
|   } query; | ||||
|   struct { | ||||
|     lnm_http_req_iheader arr[LNM_HTTP_MAX_REQ_HEADERS]; | ||||
|     lnm_http_req_ihhr arr[LNM_HTTP_MAX_REQ_HEADERS]; | ||||
|     size_t len; | ||||
|   } headers; | ||||
|   struct { | ||||
|  | @ -99,6 +85,20 @@ lnm_http_parse_err lnm_http_req_parse(lnm_http_req *req, char *buf, size_t len); | |||
|  */ | ||||
| void lnm_http_req_reset(lnm_http_req *req); | ||||
| 
 | ||||
| /**
 | ||||
|  * Represents an actual header value, with offsets already resolved. | ||||
|  */ | ||||
| typedef struct lnm_http_req_hdr { | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } name; | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } value; | ||||
| } lnm_http_req_hdr; | ||||
| 
 | ||||
| /**
 | ||||
|  * Retrieve a known type header from the request. | ||||
|  * | ||||
|  | @ -109,7 +109,7 @@ void lnm_http_req_reset(lnm_http_req *req); | |||
|  * @param req request to look for header in | ||||
|  * @param type type of header to look for | ||||
|  */ | ||||
| lnm_err lnm_http_req_header_get(lnm_http_req_header *out, lnm_http_req *req, | ||||
| lnm_err lnm_http_req_header_get(lnm_http_req_hdr *out, lnm_http_req *req, | ||||
|                                 lnm_http_header type); | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -122,7 +122,7 @@ lnm_err lnm_http_req_header_get(lnm_http_req_header *out, lnm_http_req *req, | |||
|  * @param req request to look for header in | ||||
|  * @param name name of the header; matches case-insensitive | ||||
|  */ | ||||
| lnm_err lnm_http_req_header_get_s(lnm_http_req_header *out, lnm_http_req *req, | ||||
| lnm_err lnm_http_req_header_get_s(lnm_http_req_hdr *out, lnm_http_req *req, | ||||
|                                   const char *name); | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -135,4 +135,32 @@ lnm_err lnm_http_req_header_get_s(lnm_http_req_header *out, lnm_http_req *req, | |||
| size_t lnm_http_req_route_segment(const char **out, lnm_http_req *req, | ||||
|                                   const char *key); | ||||
| 
 | ||||
| /**
 | ||||
|  * Represents a parameter in an HTTP header. | ||||
|  */ | ||||
| typedef struct lnm_http_req_hdr_param { | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } key; | ||||
|   struct { | ||||
|     const char *s; | ||||
|     size_t len; | ||||
|   } value; | ||||
| } lnm_http_req_hdr_param; | ||||
| 
 | ||||
| /**
 | ||||
|  * Retrieve a specific key-value parameter from a header. | ||||
|  * | ||||
|  * Pointers retrieved from this function should never be used between step | ||||
|  * functions; simply request the header again if you need to. | ||||
|  * | ||||
|  * @param out output struct | ||||
|  * @param header header to look in | ||||
|  * @param key name of the parameter to return from the header | ||||
|  */ | ||||
| lnm_err lnm_http_req_header_param(lnm_http_req_hdr_param *param, | ||||
|                                   const lnm_http_req_hdr *header, | ||||
|                                   const char *key); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -79,7 +79,7 @@ void lnm_http_loop_process_parse_headers(lnm_http_conn *conn) { | |||
|   lnm_http_loop_ctx *ctx = conn->ctx; | ||||
|   lnm_http_req *req = &ctx->req; | ||||
| 
 | ||||
|   lnm_http_req_header header; | ||||
|   lnm_http_req_hdr header; | ||||
|   if (lnm_http_req_header_get(&header, req, lnm_http_header_content_length) == | ||||
|       lnm_err_ok) { | ||||
|     req->body.expected_len = lnm_atoi(header.value.s, header.value.len); | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ lnm_http_step_err lnm_http_loop_step_auth(lnm_http_conn *conn) { | |||
|   // If there's no API key, requests are always authorized
 | ||||
|   bool authorized = ctx->g->api_key == NULL; | ||||
| 
 | ||||
|   lnm_http_req_header header; | ||||
|   lnm_http_req_hdr header; | ||||
| 
 | ||||
|   if (!authorized && lnm_http_req_header_get_s(&header, &ctx->req, | ||||
|                                                "X-Api-Key") == lnm_err_ok) { | ||||
|  |  | |||
|  | @ -88,17 +88,17 @@ void lnm_http_req_reset(lnm_http_req *req) { | |||
|   memset(req, 0, sizeof(lnm_http_req)); | ||||
| } | ||||
| 
 | ||||
| lnm_err lnm_http_req_header_get(lnm_http_req_header *out, lnm_http_req *req, | ||||
| lnm_err lnm_http_req_header_get(lnm_http_req_hdr *out, lnm_http_req *req, | ||||
|                                 lnm_http_header type) { | ||||
|   return lnm_http_req_header_get_s(out, req, lnm_http_header_names[type]); | ||||
| } | ||||
| 
 | ||||
| lnm_err lnm_http_req_header_get_s(lnm_http_req_header *out, lnm_http_req *req, | ||||
| lnm_err lnm_http_req_header_get_s(lnm_http_req_hdr *out, lnm_http_req *req, | ||||
|                                   const char *name) { | ||||
|   size_t name_len = strlen(name); | ||||
| 
 | ||||
|   for (size_t i = 0; i < req->headers.len; i++) { | ||||
|     const lnm_http_req_iheader *header = &req->headers.arr[i]; | ||||
|     const lnm_http_req_ihhr *header = &req->headers.arr[i]; | ||||
| 
 | ||||
|     if (lnm_strnieq(req->buf.s + header->name.o, header->name.len, name, | ||||
|                     name_len)) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue