Mercurial > sci
view scid/page-workers.c @ 64:562372396019
misc: improve manual pages and documentation
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 18 Aug 2022 20:17:18 +0200 |
parents | bc617784ec97 |
children | 38bdcfb3d4f7 |
line wrap: on
line source
/* * page-workers.c -- page /workers/<name> route * * Copyright (c) 2021-2022 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 *worker, *jobresults; char *body; if (!(worker = db_worker_find(r->path))) pageutil_status(r, KHTTP_404); else { /* Silently ignore jobs if it has failed. */ if ((jobresults = db_jobresult_list_by_worker(r->path))) json_object_set_new(worker, "jobresults", jobresults); body = theme_render("onPageWorker", worker); pageutil_render(r, KHTTP_200, KMIME_TEXT_HTML, body); free(body); } } static void get_all(struct kreq *r) { json_t *workers; char *body; if (!(workers = db_worker_list())) pageutil_status(r, KHTTP_500); else { body = theme_render("onPageWorkers", util_json_pack("{so}", "workers", workers )); 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_workers(struct kreq *r) { (void)r; switch (r->method) { case KMETHOD_GET: get(r); break; default: pageutil_status(r, KHTTP_400); break; } }