github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/routers/api/report/badge.go (about) 1 package report 2 3 import ( 4 "fmt" 5 6 "github.com/covergates/covergates/core" 7 "github.com/gin-gonic/gin" 8 "github.com/narqo/go-badge" 9 ) 10 11 // HandleGetBadge for the report id 12 // @Summary get badge for the report id 13 // @Tags Report 14 // @Param id path string true "report id" 15 // @Param latest query bool false "get latest report in main branch" 16 // @Success 200 {object} string "badge svg" 17 // @Router /reports/{id}/badge [get] 18 func HandleGetBadge( 19 reportStore core.ReportStore, 20 repoStore core.RepoStore, 21 ) gin.HandlerFunc { 22 return func(c *gin.Context) { 23 reportID := c.Param("id") 24 report, err := getLatest(reportStore, repoStore, reportID) 25 if err != nil { 26 c.String(500, err.Error()) 27 return 28 } 29 data, err := badge.RenderBytes( 30 "Covergates", 31 fmt.Sprintf("%d%%", int(report.StatementCoverage()*100)), 32 "#00838F", 33 ) 34 if err != nil { 35 c.String(500, err.Error()) 36 return 37 } 38 c.Header("Cache-Control", "max-age=600") 39 c.Data(200, "image/svg+xml", data) 40 } 41 }