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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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 @@
-
\ 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)
+ }
+ })
+ }
+}