Mercurial > sci
annotate scid/page-jobresults.c @ 46:16f1c72d1635
scid: simplify theme code
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 15 Aug 2022 17:57:34 +0200 |
parents | 6854efe15210 |
children | 71cd8447e3a4 |
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 } |