Mercurial > sci
view scid/page-jobresults.c @ 41:00b9af607524
scid: implement /jobresults/id page
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 09 Aug 2022 14:52:34 +0200 |
parents | |
children | 6854efe15210 |
line wrap: on
line source
/* * page-jobresults.c -- page /jobresults/<id> 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 <stdio.h> #include "db.h" #include "page-jobresults.h" #include "pageutil.h" #include "theme.h" #include "util.h" static void list(struct kreq *r, intmax_t id) { json_t *results, *doc; char *data; if (!(results = db_jobresult_list_by_job(id))) pageutil_status(r, KHTTP_404); else { doc = util_json_pack("{sI so}", "job_id", (json_int_t)id, "jobresults", results ); data = theme_page_jobresults(doc); pageutil_render(r, KHTTP_200, KMIME_TEXT_HTML, data); json_decref(doc); free(data); } } static void get(struct kreq *r) { intmax_t id; if (sscanf(r->fullpath, "/jobresults/%jd", &id) != 1) pageutil_status(r, KHTTP_400); else list(r, id); } void page_jobresults(struct kreq *r) { (void)r; switch (r->method) { case KMETHOD_GET: get(r); break; default: pageutil_status(r, KHTTP_400); break; } }