forked from cory/tildefriends
Treat the ?query string and body the same as httpd.js does. Now I can auth.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4691 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
38ab32dad9
commit
196ab66e14
11
src/http.c
11
src/http.c
@ -25,6 +25,7 @@ typedef struct _tf_http_connection_t
|
|||||||
|
|
||||||
const char* method;
|
const char* method;
|
||||||
const char* path;
|
const char* path;
|
||||||
|
const char* query;
|
||||||
int minor_version;
|
int minor_version;
|
||||||
|
|
||||||
char headers_buffer[8192];
|
char headers_buffer[8192];
|
||||||
@ -160,6 +161,7 @@ static void _http_reset_connection(tf_http_connection_t* connection)
|
|||||||
connection->headers_buffer_length = 0;
|
connection->headers_buffer_length = 0;
|
||||||
connection->body_length = 0;
|
connection->body_length = 0;
|
||||||
connection->content_length = 0;
|
connection->content_length = 0;
|
||||||
|
connection->parsed_length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _http_add_body_bytes(tf_http_connection_t* connection, const void* data, size_t size)
|
static void _http_add_body_bytes(tf_http_connection_t* connection, const void* data, size_t size)
|
||||||
@ -180,6 +182,9 @@ static void _http_add_body_bytes(tf_http_connection_t* connection, const void* d
|
|||||||
.phase = k_http_callback_phase_headers_received,
|
.phase = k_http_callback_phase_headers_received,
|
||||||
.method = connection->method,
|
.method = connection->method,
|
||||||
.path = connection->path,
|
.path = connection->path,
|
||||||
|
.query = connection->query,
|
||||||
|
.body = connection->body,
|
||||||
|
.content_length = connection->content_length,
|
||||||
.headers = connection->headers,
|
.headers = connection->headers,
|
||||||
.headers_count = connection->headers_length,
|
.headers_count = connection->headers_length,
|
||||||
.user_data = connection->user_data,
|
.user_data = connection->user_data,
|
||||||
@ -216,6 +221,12 @@ static void _http_on_read(uv_stream_t* stream, ssize_t read_size, const uv_buf_t
|
|||||||
((char*)connection->method)[method_length] = '\0';
|
((char*)connection->method)[method_length] = '\0';
|
||||||
connection->path = path;
|
connection->path = path;
|
||||||
((char*)connection->path)[path_length] = '\0';
|
((char*)connection->path)[path_length] = '\0';
|
||||||
|
char* q = strchr(connection->path, '?');
|
||||||
|
if (q)
|
||||||
|
{
|
||||||
|
*q = '\0';
|
||||||
|
connection->query = q + 1;
|
||||||
|
}
|
||||||
|
|
||||||
connection->connection_close = connection->minor_version == 0;
|
connection->connection_close = connection->minor_version == 0;
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ typedef struct _tf_http_request_t
|
|||||||
tf_http_connection_t* connection;
|
tf_http_connection_t* connection;
|
||||||
const char* method;
|
const char* method;
|
||||||
const char* path;
|
const char* path;
|
||||||
|
const char* query;
|
||||||
|
void* body;
|
||||||
|
size_t content_length;
|
||||||
struct phr_header* headers;
|
struct phr_header* headers;
|
||||||
int headers_count;
|
int headers_count;
|
||||||
void* user_data;
|
void* user_data;
|
||||||
|
@ -102,6 +102,7 @@ static void _httpd_callback(tf_http_request_t* request)
|
|||||||
http_handler_data_t* data = request->user_data;
|
http_handler_data_t* data = request->user_data;
|
||||||
JSContext* context = data->context;
|
JSContext* context = data->context;
|
||||||
JSValue request_object = JS_NewObject(context);
|
JSValue request_object = JS_NewObject(context);
|
||||||
|
JS_SetPropertyStr(context, request_object, "method", JS_NewString(context, request->method));
|
||||||
JS_SetPropertyStr(context, request_object, "uri", JS_NewString(context, request->path));
|
JS_SetPropertyStr(context, request_object, "uri", JS_NewString(context, request->path));
|
||||||
JSValue headers = JS_NewObject(context);
|
JSValue headers = JS_NewObject(context);
|
||||||
for (int i = 0; i < request->headers_count; i++)
|
for (int i = 0; i < request->headers_count; i++)
|
||||||
@ -109,6 +110,14 @@ static void _httpd_callback(tf_http_request_t* request)
|
|||||||
JS_SetPropertyStr(context, headers, request->headers[i].name, JS_NewString(context, request->headers[i].value));
|
JS_SetPropertyStr(context, headers, request->headers[i].name, JS_NewString(context, request->headers[i].value));
|
||||||
}
|
}
|
||||||
JS_SetPropertyStr(context, request_object, "headers", headers);
|
JS_SetPropertyStr(context, request_object, "headers", headers);
|
||||||
|
if (request->query)
|
||||||
|
{
|
||||||
|
JS_SetPropertyStr(context, request_object, "query", JS_NewString(context, request->query));
|
||||||
|
}
|
||||||
|
if (request->body)
|
||||||
|
{
|
||||||
|
JS_SetPropertyStr(context, request_object, "body", tf_util_new_uint8_array(context, request->body, request->content_length));
|
||||||
|
}
|
||||||
|
|
||||||
JSValue client = JS_NewObject(context);
|
JSValue client = JS_NewObject(context);
|
||||||
JS_SetPropertyStr(context, client, "tls", JS_FALSE);
|
JS_SetPropertyStr(context, client, "tls", JS_FALSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user