Skip to content

Commit c5beb53

Browse files
author
Wilfried OLLIVIER
committed
Add badge route for specific commit and latest
1 parent 3ad2155 commit c5beb53

File tree

2 files changed

+49
-45
lines changed

2 files changed

+49
-45
lines changed

application/application.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,13 @@ func New(cfg *conf.Conf) (*Application, error) {
137137
r.Post("/", a.PostTaskHandler)
138138
r.Get("/", a.TaskHandler(false))
139139
r.Get("/status", badge.StatusBadge(a.storage, false))
140-
r.Get("/badge/{badge}", a.TaskMyBadgeHandler)
140+
r.Get("/badge/{badge}", a.BadgeMyTaskHandler(false))
141141
r.Get("/volumes/*", a.VolumesHandler(6, false))
142142
})
143143
r.Route("/latest", func(r chi.Router) {
144144
r.Get("/", a.TaskHandler(true))
145145
r.Get("/status", badge.StatusBadge(a.storage, true))
146+
r.Get("/badge/{badge}", a.BadgeMyTaskHandler(true))
146147
r.Get("/volumes/*", a.VolumesHandler(6, true))
147148
})
148149
})

application/badge.go

Lines changed: 47 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,56 @@ import (
1313
"go.uber.org/zap"
1414
)
1515

16-
func (a *Application) TaskMyBadgeHandler(w http.ResponseWriter, r *http.Request) {
17-
l := a.logger.With(
18-
zap.String("url", r.URL.String()),
19-
zap.String("service", chi.URLParam(r, "serviceID")),
20-
zap.String("project", chi.URLParam(r, "project")),
21-
zap.String("branch", chi.URLParam(r, "branch")),
22-
zap.String("commit", chi.URLParam(r, "commit")),
23-
zap.String("branch", chi.URLParam(r, "branch")),
24-
)
25-
service := chi.URLParam(r, "serviceID")
26-
project := chi.URLParam(r, "project")
27-
branch := chi.URLParam(r, "branch")
28-
commit := chi.URLParam(r, "commit")
29-
bdg := chi.URLParam(r, "badge")
16+
// BadgeMyTaskHandler generates a badge for a given task
17+
func (a *Application) BadgeMyTaskHandler(latest bool) http.HandlerFunc {
18+
return func(w http.ResponseWriter, r *http.Request) {
19+
l := a.logger.With(
20+
zap.String("url", r.URL.String()),
21+
zap.String("service", chi.URLParam(r, "serviceID")),
22+
zap.String("project", chi.URLParam(r, "project")),
23+
zap.String("branch", chi.URLParam(r, "branch")),
24+
zap.String("commit", chi.URLParam(r, "commit")),
25+
zap.String("branch", chi.URLParam(r, "branch")),
26+
)
27+
service := chi.URLParam(r, "serviceID")
28+
project := chi.URLParam(r, "project")
29+
branch := chi.URLParam(r, "branch")
30+
commit := chi.URLParam(r, "commit")
31+
bdg := chi.URLParam(r, "badge")
3032

31-
t, err := a.storage.GetByCommit(service, project, branch, commit, false)
32-
if err != nil {
33-
l.Warn("Task get error", zap.Error(err))
34-
w.WriteHeader(http.StatusNotFound)
35-
return
36-
}
33+
t, err := a.storage.GetByCommit(service, project, branch, commit, latest)
34+
if err != nil {
35+
l.Warn("Task get error", zap.Error(err))
36+
w.WriteHeader(http.StatusNotFound)
37+
return
38+
}
3739

38-
p := filepath.Join(a.storage.GetVolumePath(t), "/data", fmt.Sprintf("%s.badge", bdg))
40+
p := filepath.Join(a.storage.GetVolumePath(t), "/data", fmt.Sprintf("%s.badge", bdg))
3941

40-
_, err = os.Stat(p)
41-
if err != nil {
42-
l.Warn("Task get error", zap.Error(err))
43-
if os.IsNotExist(err) {
44-
w.WriteHeader(http.StatusNotFound)
45-
} else {
46-
w.WriteHeader(http.StatusBadRequest)
42+
_, err = os.Stat(p)
43+
if err != nil {
44+
l.Warn("Task get error", zap.Error(err))
45+
if os.IsNotExist(err) {
46+
w.WriteHeader(http.StatusNotFound)
47+
} else {
48+
w.WriteHeader(http.StatusBadRequest)
49+
}
50+
return
4751
}
48-
return
49-
}
50-
l = l.With(zap.String("path", p))
51-
b, err := ioutil.ReadFile(p)
52-
if err != nil {
53-
l.Error("reading file", zap.Error(err))
54-
w.WriteHeader(http.StatusInternalServerError)
55-
return
56-
}
57-
var badge _badge.Badge
58-
err = json.Unmarshal(b, &badge)
59-
if err != nil {
60-
l.Error("JSON unmarshal", zap.Error(err))
61-
w.WriteHeader(http.StatusInternalServerError)
62-
return
52+
l = l.With(zap.String("path", p))
53+
b, err := ioutil.ReadFile(p)
54+
if err != nil {
55+
l.Error("reading file", zap.Error(err))
56+
w.WriteHeader(http.StatusInternalServerError)
57+
return
58+
}
59+
var badge _badge.Badge
60+
err = json.Unmarshal(b, &badge)
61+
if err != nil {
62+
l.Error("JSON unmarshal", zap.Error(err))
63+
w.WriteHeader(http.StatusInternalServerError)
64+
return
65+
}
66+
badge.Render(w, r)
6367
}
64-
badge.Render(w, r)
6568
}

0 commit comments

Comments
 (0)