Mercurial > sci
view scid/page-projects.c @ 85:cf49ab595e2e default tip @
sciworkerd: avoid spawning several tasks
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 09 Mar 2023 10:43:48 +0100 |
parents | 71cd8447e3a4 |
children |
line wrap: on
line source
/* * page-projects.c -- page /projects[/<name>] route * * Copyright (c) 2021-2023 David Demelier <markand@malikania.fr> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <assert.h> #include <stdlib.h> #include <string.h> #include "db.h" #include "page-workers.h" #include "pageutil.h" #include "theme.h" #include "util.h" static void get_one(struct kreq *r) { json_t *project; char *body; if (!(project = db_project_find(r->path))) pageutil_status(r, KHTTP_404); else { body = theme_render("onPageProject", project); pageutil_render(r, KHTTP_200, KMIME_TEXT_HTML, body); free(body); } } static void get_all(struct kreq *r) { json_t *projects; char *body; if (!(projects = db_project_list())) pageutil_status(r, KHTTP_500); else { body = theme_render("onPageProjects", util_json_pack("{so}", "projects", projects )); pageutil_render(r, KHTTP_200, KMIME_TEXT_HTML, body); free(body); } } static void get(struct kreq *r) { if (strlen(r->path) > 0) get_one(r); else get_all(r); } void page_projects(struct kreq *r) { (void)r; switch (r->method) { case KMETHOD_GET: get(r); break; default: pageutil_status(r, KHTTP_400); break; } }