init
This commit is contained in:
52
internal/httpapi/router.go
Normal file
52
internal/httpapi/router.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"git.apinb.com/ops/license/internal/dashboard"
|
||||
"git.apinb.com/ops/license/internal/issuance"
|
||||
"git.apinb.com/ops/license/internal/subject"
|
||||
)
|
||||
|
||||
func NewRouter(subjectService *subject.Service, issuanceService *issuance.Service, dashboardService *dashboard.Service) (*gin.Engine, error) {
|
||||
if subjectService == nil || issuanceService == nil || dashboardService == nil {
|
||||
return nil, errors.New("HTTP API 依赖不能为空")
|
||||
}
|
||||
|
||||
router := gin.New()
|
||||
router.Use(gin.Recovery(), routeLogger())
|
||||
|
||||
subjects := subjectHandler{service: subjectService}
|
||||
licences := issuanceHandler{service: issuanceService, subjectService: subjectService}
|
||||
dashboardHandler := dashboardHandler{service: dashboardService}
|
||||
|
||||
api := router.Group("/api/v1")
|
||||
api.GET("/dashboard", dashboardHandler.get)
|
||||
api.GET("/subjects", subjects.list)
|
||||
api.POST("/subjects", subjects.create)
|
||||
api.GET("/subjects/:id", subjects.get)
|
||||
api.PUT("/subjects/:id", subjects.update)
|
||||
api.DELETE("/subjects/:id", subjects.delete)
|
||||
api.POST("/subjects/:id/licences", licences.issue)
|
||||
api.GET("/licences", licences.list)
|
||||
api.GET("/licences/:id", licences.get)
|
||||
api.GET("/licences/:id/download", licences.download)
|
||||
api.POST("/licences/:id/renew", licences.renew)
|
||||
return router, nil
|
||||
}
|
||||
|
||||
func routeLogger() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
startedAt := time.Now()
|
||||
c.Next()
|
||||
route := c.FullPath()
|
||||
if route == "" {
|
||||
route = c.Request.URL.Path
|
||||
}
|
||||
log.Printf("HTTP route=%s status=%d duration=%s", route, c.Writer.Status(), time.Since(startedAt).Round(time.Millisecond))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user