feat: using shields.io for all badges

This commit is contained in:
Carlos Alexandro Becker
2018-12-30 16:33:52 -02:00
parent 3ec84fb54f
commit 5f48725722
23 changed files with 51 additions and 28 deletions

View File

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

29
handlers/badge_test.go Normal file
View File

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