diff --git a/assets/badges/a+_flat-square.svg b/assets/badges/a+_flat-square.svg deleted file mode 100644 index 7aec57d..0000000 --- a/assets/badges/a+_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportA+ \ No newline at end of file diff --git a/assets/badges/a+_flat.svg b/assets/badges/a+_flat.svg deleted file mode 100644 index ba755a4..0000000 --- a/assets/badges/a+_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportA+A+ \ No newline at end of file diff --git a/assets/badges/a+_plastic.svg b/assets/badges/a+_plastic.svg deleted file mode 100644 index b60f74c..0000000 --- a/assets/badges/a+_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportA+A+ \ No newline at end of file diff --git a/assets/badges/a_flat-square.svg b/assets/badges/a_flat-square.svg deleted file mode 100644 index 0271907..0000000 --- a/assets/badges/a_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportA \ No newline at end of file diff --git a/assets/badges/a_flat.svg b/assets/badges/a_flat.svg deleted file mode 100644 index 39de4b7..0000000 --- a/assets/badges/a_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportAA \ No newline at end of file diff --git a/assets/badges/a_plastic.svg b/assets/badges/a_plastic.svg deleted file mode 100644 index ce7ee7c..0000000 --- a/assets/badges/a_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportAA \ No newline at end of file diff --git a/assets/badges/b_flat-square.svg b/assets/badges/b_flat-square.svg deleted file mode 100644 index 0b944d4..0000000 --- a/assets/badges/b_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportB \ No newline at end of file diff --git a/assets/badges/b_flat.svg b/assets/badges/b_flat.svg deleted file mode 100644 index 65c77d8..0000000 --- a/assets/badges/b_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportBB \ No newline at end of file diff --git a/assets/badges/b_plastic.svg b/assets/badges/b_plastic.svg deleted file mode 100644 index e356c83..0000000 --- a/assets/badges/b_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportBB \ No newline at end of file diff --git a/assets/badges/c_flat-square.svg b/assets/badges/c_flat-square.svg deleted file mode 100644 index 09f7b0f..0000000 --- a/assets/badges/c_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportC \ No newline at end of file diff --git a/assets/badges/c_flat.svg b/assets/badges/c_flat.svg deleted file mode 100644 index 1d8ae8d..0000000 --- a/assets/badges/c_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportCC \ No newline at end of file diff --git a/assets/badges/c_plastic.svg b/assets/badges/c_plastic.svg deleted file mode 100644 index 03ec27a..0000000 --- a/assets/badges/c_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportCC \ No newline at end of file diff --git a/assets/badges/d_flat-square.svg b/assets/badges/d_flat-square.svg deleted file mode 100644 index d454dca..0000000 --- a/assets/badges/d_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportD \ No newline at end of file diff --git a/assets/badges/d_flat.svg b/assets/badges/d_flat.svg deleted file mode 100644 index e6581e8..0000000 --- a/assets/badges/d_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportDD \ No newline at end of file diff --git a/assets/badges/d_plastic.svg b/assets/badges/d_plastic.svg deleted file mode 100644 index 5644d19..0000000 --- a/assets/badges/d_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportDD \ No newline at end of file diff --git a/assets/badges/e_flat-square.svg b/assets/badges/e_flat-square.svg deleted file mode 100644 index 3cf04e1..0000000 --- a/assets/badges/e_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportE \ No newline at end of file diff --git a/assets/badges/e_flat.svg b/assets/badges/e_flat.svg deleted file mode 100644 index ee47b1b..0000000 --- a/assets/badges/e_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportEE \ No newline at end of file diff --git a/assets/badges/e_plastic.svg b/assets/badges/e_plastic.svg deleted file mode 100644 index c111867..0000000 --- a/assets/badges/e_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportEE \ No newline at end of file diff --git a/assets/badges/f_flat-square.svg b/assets/badges/f_flat-square.svg deleted file mode 100644 index f5866e2..0000000 --- a/assets/badges/f_flat-square.svg +++ /dev/null @@ -1 +0,0 @@ -go reportF \ No newline at end of file diff --git a/assets/badges/f_flat.svg b/assets/badges/f_flat.svg deleted file mode 100644 index a34e67a..0000000 --- a/assets/badges/f_flat.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportFF \ No newline at end of file diff --git a/assets/badges/f_plastic.svg b/assets/badges/f_plastic.svg deleted file mode 100644 index 282312d..0000000 --- a/assets/badges/f_plastic.svg +++ /dev/null @@ -1 +0,0 @@ -go reportgo reportFF \ No newline at end of file diff --git a/handlers/badge.go b/handlers/badge.go index 861a204..e510ea7 100644 --- a/handlers/badge.go +++ b/handlers/badge.go @@ -4,15 +4,10 @@ import ( "fmt" "log" "net/http" - "strings" "github.com/gojp/goreportcard/check" ) -func badgePath(grade check.Grade, style string) string { - return fmt.Sprintf("assets/badges/%s_%s.svg", strings.ToLower(string(grade)), strings.ToLower(style)) -} - // BadgeHandler handles fetching the badge images func BadgeHandler(w http.ResponseWriter, r *http.Request, repo string) { resp, err := newChecksResp(repo, false) @@ -30,6 +25,26 @@ func BadgeHandler(w http.ResponseWriter, r *http.Request, repo string) { return } - w.Header().Set("Cache-control", "no-store, no-cache, must-revalidate") - http.ServeFile(w, r, badgePath(resp.Grade, style)) + http.Redirect(w, r, badgeURL(resp.Grade, style), http.StatusTemporaryRedirect) +} + +func badgeURL(grade check.Grade, style string) string { + var color string + switch grade { + case check.GradeAPlus: + color = "brightgreen" + case check.GradeA: + color = "green" + case check.GradeB: + color = "yellowgreen" + case check.GradeC: + color = "yellow" + case check.GradeD: + color = "orange" + case check.GradeE: + fallthrough + case check.GradeF: + color = "red" + } + return fmt.Sprintf("https://img.shields.io/badge/go%%20report-%s-%s.svg?style=%s", grade, color, style) } diff --git a/handlers/badge_test.go b/handlers/badge_test.go new file mode 100644 index 0000000..8fbd9fd --- /dev/null +++ b/handlers/badge_test.go @@ -0,0 +1,29 @@ +package handlers + +import ( + "testing" + + "github.com/gojp/goreportcard/check" +) + +func TestBadgeURL(t *testing.T) { + for grade, expectedURL := range map[check.Grade]string{ + check.GradeAPlus: "https://img.shields.io/badge/go%20report-A+-brightgreen.svg?style=for-the-badge", + check.GradeA: "https://img.shields.io/badge/go%20report-A-green.svg?style=for-the-badge", + check.GradeB: "https://img.shields.io/badge/go%20report-B-yellowgreen.svg?style=for-the-badge", + check.GradeC: "https://img.shields.io/badge/go%20report-C-yellow.svg?style=for-the-badge", + check.GradeD: "https://img.shields.io/badge/go%20report-D-orange.svg?style=for-the-badge", + check.GradeE: "https://img.shields.io/badge/go%20report-E-red.svg?style=for-the-badge", + check.GradeF: "https://img.shields.io/badge/go%20report-F-red.svg?style=for-the-badge", + } { + grade := grade + expectedURL := expectedURL + t.Run(string(grade), func(t *testing.T) { + t.Parallel() + got := badgeURL(grade, "for-the-badge") + if got != expectedURL { + t.Errorf("expected %s, got %s", expectedURL, got) + } + }) + } +}