Static assets finally
This commit is contained in:
31
routes.c
31
routes.c
@ -16,7 +16,7 @@
|
||||
void make_internal_server_error(Route_Result *result)
|
||||
{
|
||||
result->status_code = 500;
|
||||
result->type = ROUTE_RESULT_TEXT;
|
||||
result->type = ROUTE_RESULT_DYNAMIC;
|
||||
list_append(&result->headers, "Content-Type: text/plain");
|
||||
sb_append_nstr(&result->body, INTERNAL_SERVER_ERROR_MSG);
|
||||
sb_finish(&result->body);
|
||||
@ -28,7 +28,7 @@ void make_application_json(Route_Result *result, int code, cJSON *root)
|
||||
defer { free(root_text); }
|
||||
|
||||
result->status_code = code;
|
||||
result->type = ROUTE_RESULT_TEXT;
|
||||
result->type = ROUTE_RESULT_DYNAMIC;
|
||||
list_append(&result->headers, clonestr("Content-Type: application/json"));
|
||||
sb_append_nstr(&result->body, root_text);
|
||||
sb_finish(&result->body);
|
||||
@ -39,7 +39,7 @@ void make_binary(Route_Result *result, char *content_type, int code, char *data,
|
||||
char type[100];
|
||||
snprintf(type, sizeof(type), "Content-Type: %s", content_type);
|
||||
result->status_code = code;
|
||||
result->type = ROUTE_RESULT_BINARY;
|
||||
result->type = ROUTE_RESULT_DYNAMIC;
|
||||
list_append(&result->headers, clonestr(type));
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
sb_append_char(&result->body, data[i]);
|
||||
@ -53,7 +53,7 @@ void make_text(Route_Result *result, char *subtype, int code, char *in)
|
||||
snprintf(type, sizeof(type), "Content-Type: text/%s", subtype);
|
||||
|
||||
result->status_code = code;
|
||||
result->type = ROUTE_RESULT_TEXT;
|
||||
result->type = ROUTE_RESULT_DYNAMIC;
|
||||
list_append(&result->headers, clonestr(type));
|
||||
sb_append_nstr(&result->body, in);
|
||||
sb_finish(&result->body);
|
||||
@ -323,6 +323,15 @@ ROUTE_HANDLER(generic_blog)
|
||||
}
|
||||
}
|
||||
|
||||
void collect_blogs(Baked_Resource *resource, void *udata)
|
||||
{
|
||||
struct { Arena *tmp; String_Builder *sb; } *ud = udata;
|
||||
if ((strlen(resource->key) >= strlen("blog-"))
|
||||
&& strncmp(resource->key, "blog-", strlen("blog-")) == 0) {
|
||||
sb_append_nstr_alloc(ud->tmp, ud->sb, fmt("<li><a href=\"/%s\">%s</a></li>", resource->key, resource->key));
|
||||
}
|
||||
}
|
||||
|
||||
ROUTE_HANDLER(blog)
|
||||
{
|
||||
NString_List env = {0};
|
||||
@ -335,15 +344,11 @@ ROUTE_HANDLER(blog)
|
||||
defer { arena_destroy(&tmp); }
|
||||
|
||||
String_Builder sb = {0};
|
||||
void collect_blogs(Baked_Resource *resource)
|
||||
{
|
||||
if ((strlen(resource->key) >= strlen("blog-"))
|
||||
&& strncmp(resource->key, "blog-", strlen("blog-")) == 0) {
|
||||
sb_append_nstr_alloc(&tmp, &sb, fmt("<li><a href=\"/%s\">%s</a></li>", resource->key, resource->key));
|
||||
}
|
||||
}
|
||||
|
||||
baked_resource_each(&collect_blogs);
|
||||
struct { Arena *tmp; String_Builder *sb; } collect_blogs_data = {
|
||||
.tmp = &tmp,
|
||||
.sb = &sb,
|
||||
};
|
||||
baked_resource_each(&collect_blogs, &collect_blogs_data);
|
||||
sb_finish_alloc(&tmp, &sb);
|
||||
list_append(&env, fmt("-DBLOG_POSTS=%s", sb.items));
|
||||
|
||||
|
Reference in New Issue
Block a user