annotate scid/page-jobresults.c @ 71:ef8f9c986080

scid: fix worker with . in their names
author David Demelier <markand@malikania.fr>
date Tue, 24 Jan 2023 10:04:47 +0100
parents 16f1c72d1635
children 71cd8447e3a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * page-jobresults.c -- page /jobresults/<id> route
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2021-2022 David Demelier <markand@malikania.fr>
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <stdio.h>
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include "db.h"
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "page-jobresults.h"
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include "pageutil.h"
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include "theme.h"
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include "util.h"
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 static void
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 list(struct kreq *r, intmax_t id)
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 {
43
6854efe15210 scid: push json recursively
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
31 json_t *results;
41
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 char *data;
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 if (!(results = db_jobresult_list_by_job(id)))
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 pageutil_status(r, KHTTP_404);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 else {
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
37 data = theme_render("onPageJobresults", util_json_pack("{sI so}",
43
6854efe15210 scid: push json recursively
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
38 "job_id", (json_int_t)id,
6854efe15210 scid: push json recursively
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
39 "jobresults", results
6854efe15210 scid: push json recursively
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
40 ));
41
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 pageutil_render(r, KHTTP_200, KMIME_TEXT_HTML, data);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 free(data);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 }
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 }
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 static void
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 get(struct kreq *r)
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 {
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 intmax_t id;
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
50
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 if (sscanf(r->fullpath, "/jobresults/%jd", &id) != 1)
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 pageutil_status(r, KHTTP_400);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 else
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 list(r, id);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 void
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 page_jobresults(struct kreq *r)
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 {
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 (void)r;
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 switch (r->method) {
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 case KMETHOD_GET:
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 get(r);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 break;
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 default:
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 pageutil_status(r, KHTTP_400);
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 break;
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 }