From 769590d77993d8c26bfb9d056cb94d870cf6c745 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Mon, 22 May 2023 18:06:34 +0330 Subject: [feature] separate subscription service Co-Authored-By: Alireza Ahmadi --- sub/subController.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 sub/subController.go (limited to 'sub/subController.go') diff --git a/sub/subController.go b/sub/subController.go new file mode 100644 index 00000000..69d9086d --- /dev/null +++ b/sub/subController.go @@ -0,0 +1,45 @@ +package sub + +import ( + "encoding/base64" + "strings" + + "github.com/gin-gonic/gin" +) + +type SUBController struct { + subService SubService +} + +func NewSUBController(g *gin.RouterGroup) *SUBController { + a := &SUBController{} + a.initRouter(g) + return a +} + +func (a *SUBController) initRouter(g *gin.RouterGroup) { + g = g.Group("/") + + g.GET("/:subid", a.subs) +} + +func (a *SUBController) subs(c *gin.Context) { + subId := c.Param("subid") + host := strings.Split(c.Request.Host, ":")[0] + subs, headers, err := a.subService.GetSubs(subId, host) + if err != nil || len(subs) == 0 { + c.String(400, "Error!") + } else { + result := "" + for _, sub := range subs { + result += sub + "\n" + } + + // 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, base64.StdEncoding.EncodeToString([]byte(result))) + } +} -- cgit v1.2.3