]> gitweb.factorcode.org Git - factor.git/blob - extra/webapps/mason/mason.factor
Switch to https urls
[factor.git] / extra / webapps / mason / mason.factor
1 ! Copyright (C) 2009, 2010 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors furnace.actions furnace.auth furnace.db
4 furnace.redirection http.server.dispatchers urls
5 webapps.mason.backend webapps.mason.grids webapps.mason.package
6 webapps.mason.release webapps.mason.report
7 webapps.mason.downloads webapps.mason.counter
8 webapps.mason.status-update webapps.mason.docs-update
9 webapps.mason.dashboard webapps.mason.make-release
10 webapps.mason.increment-counter ;
11 IN: webapps.mason
12
13 TUPLE: mason-app < dispatcher ;
14
15 SYMBOL: build-engineer?
16
17 build-engineer? define-capability
18
19 : <mason-protected> ( responder -- responder' )
20     <protected>
21         "access the build farm dashboard" >>description
22         { build-engineer? } >>capabilities ;
23
24 : <mason-app> ( -- dispatcher )
25     mason-app new-dispatcher
26     <build-report-action>
27         "report" add-responder
28
29     <download-package-action>
30         { mason-app "download-package" } >>template
31         "package" add-responder
32
33     <download-release-action>
34         { mason-app "download-release" } >>template
35         "release" add-responder
36
37     <downloads-action>
38         { mason-app "downloads" } >>template
39         "downloads" add-responder
40
41     <status-update-action>
42         "status-update" add-responder
43
44     <docs-update-action>
45         "docs-update" add-responder
46
47     <counter-action>
48         "counter" add-responder
49
50     <dispatcher>
51         <dashboard-action>
52             { mason-app "dashboard" } >>template
53             "" add-responder
54
55         <make-release-action> <mason-protected>
56             "make-release" add-responder
57
58         <increment-counter-action> <mason-protected>
59             "increment-counter" add-responder
60
61         "dashboard" add-responder
62
63     <action>
64         [ URL" $mason-app/dashboard" <redirect> ] >>display
65         "" add-responder
66     ;