| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | 
							- package sub
 
- import (
 
- 	"encoding/base64"
 
- 	"strings"
 
- 	"github.com/gin-gonic/gin"
 
- )
 
- type SUBController struct {
 
- 	subPath        string
 
- 	subJsonPath    string
 
- 	subEncrypt     bool
 
- 	updateInterval string
 
- 	subService     *SubService
 
- 	subJsonService *SubJsonService
 
- }
 
- func NewSUBController(
 
- 	g *gin.RouterGroup,
 
- 	subPath string,
 
- 	jsonPath string,
 
- 	encrypt bool,
 
- 	showInfo bool,
 
- 	rModel string,
 
- 	update string,
 
- 	jsonFragment string,
 
- ) *SUBController {
 
- 	a := &SUBController{
 
- 		subPath:        subPath,
 
- 		subJsonPath:    jsonPath,
 
- 		subEncrypt:     encrypt,
 
- 		updateInterval: update,
 
- 		subService:     NewSubService(showInfo, rModel),
 
- 		subJsonService: NewSubJsonService(jsonFragment),
 
- 	}
 
- 	a.initRouter(g)
 
- 	return a
 
- }
 
- func (a *SUBController) initRouter(g *gin.RouterGroup) {
 
- 	gLink := g.Group(a.subPath)
 
- 	gJson := g.Group(a.subJsonPath)
 
- 	gLink.GET(":subid", a.subs)
 
- 	gJson.GET(":subid", a.subJsons)
 
- }
 
- func (a *SUBController) subs(c *gin.Context) {
 
- 	subId := c.Param("subid")
 
- 	host := strings.Split(c.Request.Host, ":")[0]
 
- 	subs, header, 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", header)
 
- 		c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval)
 
- 		c.Writer.Header().Set("Profile-Title", subId)
 
- 		if a.subEncrypt {
 
- 			c.String(200, base64.StdEncoding.EncodeToString([]byte(result)))
 
- 		} else {
 
- 			c.String(200, result)
 
- 		}
 
- 	}
 
- }
 
- func (a *SUBController) subJsons(c *gin.Context) {
 
- 	subId := c.Param("subid")
 
- 	host := strings.Split(c.Request.Host, ":")[0]
 
- 	jsonSub, header, err := a.subJsonService.GetJson(subId, host)
 
- 	if err != nil || len(jsonSub) == 0 {
 
- 		c.String(400, "Error!")
 
- 	} else {
 
- 		// Add headers
 
- 		c.Writer.Header().Set("Subscription-Userinfo", header)
 
- 		c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval)
 
- 		c.Writer.Header().Set("Profile-Title", subId)
 
- 		c.String(200, jsonSub)
 
- 	}
 
- }
 
 
  |