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  }