/
routers.go
108 lines (85 loc) · 4.89 KB
/
routers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package main
// @routers.go : contains all web routes and API URIs with their respective handlers functions.
import (
"net/http"
)
// setupWebServerRoutes configures web access routes.
func setupWebServerRoutes(router *http.ServeMux) {
// URI to check web & api routes availabilities.
router.HandleFunc("/worker/ping", pong)
router.HandleFunc("/worker/settings", getSettings)
// URI to check WEB routes availabilities.
router.HandleFunc("/worker/web/ping", webPong)
// URI to collect useful worker statistics.
router.HandleFunc("/worker/health", getHealth)
// Enabled web route to pull diagnostics data.
if Config.EnableOnDemandDiagnostics {
router.HandleFunc("/worker/diagnostics", getDiagnostics)
}
// default web request - send web documentation.
router.HandleFunc("/", webV1Help)
router.HandleFunc("/worker/web/v1/docs", webV1Help)
// expected request : /worker/web/v1/cmd/execute?cmd=<task-syntax>&timeout=<value>
router.HandleFunc("/worker/web/v1/cmd/execute", instantCommandExecutor)
// expected request : /worker/web/v1/jobs/short/schedule?cmd=<task-syntax>
router.HandleFunc("/worker/web/v1/jobs/short/schedule", scheduleShortRunningJobs)
// expected request : /worker/web/v1/jobs/x/status/check?id=<jobid>&timezone=<tz>
router.HandleFunc("/worker/web/v1/jobs/x/status/check", checkJobsStatusById)
// expected request : /worker/web/v1/jobs/x/status/check/all?timezone=<tz>&order=asc|desc
router.HandleFunc("/worker/web/v1/jobs/x/status/check/all", getAllJobsStatus)
// expected format : /worker/web/v1/jobs/short/output/fetch?id=<jobid>
router.HandleFunc("/worker/web/v1/jobs/short/output/fetch", getJobsOutputById)
// expected request : /worker/web/v1/jobs/x/stop?id=<jobid>&id=<jobid>
router.HandleFunc("/worker/web/v1/jobs/x/stop", stopJobsById)
// expected request : /worker/web/v1/jobs/x/stop/all
router.HandleFunc("/worker/web/v1/jobs/x/stop/all", stopAllJobs)
// expected request : /worker/web/v1/jobs/x/restart?id=<jobid>&id=<jobid>
router.HandleFunc("/worker/web/v1/jobs/x/restart", restartJobsById)
// expected request : /worker/web/v1/jobs/x/restart/all
router.HandleFunc("/worker/web/v1/jobs/x/restart/all", restartAllJobs)
// live streaming a long running job output: /worker/web/v1/jobs/long/output/stream?id=<jobid>
// optionally add &fg=<text-color>&bg=<page-color>&bold=<true|false>&size=<font-size-in-pixels>
router.HandleFunc("/worker/web/v1/jobs/long/output/stream", streamJobsOutputById)
// download a job output file: /worker/web/v1/jobs/x/output/download?id=<jobid>
router.HandleFunc("/worker/web/v1/jobs/x/output/download", downloadJobsOutputById)
// schedule a long running job with output streaming capability.
// /worker/web/v1/jobs/long/stream/schedule?cmd=<task>&cmd=<task>&timeout=<value>&save=true|false
// optionally add &fg=<text-color>&bg=<page-color>&bold=<true|false>&size=<font-size-in-pixels>
router.HandleFunc("/worker/web/v1/jobs/long/stream/schedule", scheduleLongJobsWithStreaming)
// schedule a long running job with only streaming output to disk file.
// /worker/web/v1/jobs/long/dump/schedule?cmd=<task>&cmd=<task>&timeout=<value>
router.HandleFunc("/worker/web/v1/jobs/long/dump/schedule", scheduleLongJobsWithDumping)
}
// setupApiGatewayRoutes configures apis routes.
func setupApiGatewayRoutes(router *http.ServeMux) {
// URI to check API routes availabilities.
router.HandleFunc("/worker/api/ping", apiPong)
// Global worker routes to enable only if web routes are disabled.
if !Config.EnableWebAccess {
// URI to check web & api routes availabilities.
router.HandleFunc("/worker/ping", pong)
router.HandleFunc("/worker/settings", getSettings)
// URI to collect useful worker statistics.
router.HandleFunc("/worker/health", getHealth)
// URI to pull diagnostics data and trigger trace dump.
if Config.EnableOnDemandDiagnostics {
router.HandleFunc("/worker/diagnostics", getDiagnostics)
}
}
// default api request - send apis documentation.
// router.HandleFunc("/worker/api/v1/docs", webV1Help)
// expected request : POST /worker/api/v1/jobs/schedule/?timezone=<tz>
// expected request : POST /worker/api/v1/jobs/schedule?timezone=<tz>
router.HandleFunc("/worker/api/v1/jobs/schedule/", apiScheduleJobs)
router.HandleFunc("/worker/api/v1/jobs/schedule", apiScheduleJobs)
// expected request : GET /worker/api/v1/jobs/status?id=<jobid>&timezone=<tz>
router.HandleFunc("/worker/api/v1/jobs/status", apiCheckJobsStatusById)
// expected request : GET /worker/api/v1/jobs/status/?timezone=<tz>
router.HandleFunc("/worker/api/v1/jobs/status/", apiCheckAllJobsStatus)
// expected request : GET /worker/api/v1/jobs/fetch?id=<jobid>
router.HandleFunc("/worker/api/v1/jobs/fetch", apiFetchJobsOutputById)
// expected request : GET /worker/api/v1/jobs/stop?id=<jobid>
//router.HandleFunc("/worker/api/v1/jobs/stop", apiStopJobsById)
// expected request : GET /worker/api/v1/jobs/stop/
//router.HandleFunc("/worker/api/v1/jobs/stop/", apiStopAllJobs)
}