package sub import ( "s-ui/logger" "s-ui/service" "github.com/gin-gonic/gin" ) type SubHandler struct { service.SettingService SubService JsonService ClashService } func NewSubHandler(g *gin.RouterGroup) { a := &SubHandler{} a.initRouter(g) } func (s *SubHandler) initRouter(g *gin.RouterGroup) { g.GET("/:subid", s.subs) } func (s *SubHandler) subs(c *gin.Context) { var headers []string var result *string var err error subId := c.Param("subid") format, isFormat := c.GetQuery("format") if isFormat { switch format { case "json": result, headers, err = s.JsonService.GetJson(subId, format) case "clash": result, headers, err = s.ClashService.GetClash(subId) } if err != nil || result == nil { logger.Error(err) c.String(400, "Error!") return } } else { result, headers, err = s.SubService.GetSubs(subId) if err != nil || result == nil { logger.Error(err) c.String(400, "Error!") return } } // Add headers c.Writer.Header().Set("Subscription-Userinfo", headers[0]) c.Writer.Header().Set("Profile-Update-Interval", headers[1]) c.Writer.Header().Set("Profile-Title", headers[2]) c.String(200, *result) }