forked from infinilabs/crawler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
handler.go
68 lines (55 loc) · 1.57 KB
/
handler.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
package ui
import (
"errors"
"github.com/infinitbyte/framework/core/api"
"github.com/infinitbyte/framework/core/api/router"
"github.com/infinitbyte/framework/core/kv"
"github.com/infinitbyte/gopa/config"
"github.com/infinitbyte/gopa/model"
"github.com/infinitbyte/gopa/ui/tasks"
"net/http"
)
type AdminUI struct {
api.Handler
}
func (h AdminUI) TasksPageAction(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
var task []model.Task
var count1, count2 int
var host = h.GetParameterOrDefault(r, "host", "")
var from = h.GetIntOrDefault(r, "from", 0)
var size = h.GetIntOrDefault(r, "size", 20)
var status = h.GetIntOrDefault(r, "status", -1)
count1, task, _ = model.GetTaskList(from, size, host, status)
err, hvs := model.GetHostStatus(status)
if err != nil {
panic(err)
}
err, kvs := model.GetTaskStatus(host)
if err != nil {
panic(err)
}
tasks.Index(w, r, host, status, from, size, count1, task, count2, hvs, kvs)
}
func (h AdminUI) TaskViewPageAction(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
id := p.ByName("id")
if id == "" {
panic(errors.New("id is nill"))
}
task, err := model.GetTask(id)
if err != nil {
panic(err)
}
total, snapshots, err := model.GetSnapshotList(0, 10, id)
task.Snapshots = snapshots
task.SnapshotCount = total
tasks.View(w, r, task)
}
func (h AdminUI) GetScreenshotAction(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
id := p.ByName("id")
bytes, err := kv.GetValue(config.ScreenshotBucketKey, []byte(id))
if err != nil {
h.Error(w, err)
return
}
w.Write(bytes)
}