Initial fork commit.
Some checks failed
Release S-UI / build-frontend (push) Failing after 1m53s
Release S-UI / build-386 (push) Has been skipped
Release S-UI / build-amd64 (push) Has been skipped
Release S-UI / build-armv5 (push) Has been skipped
Release S-UI / build-armv6 (push) Has been skipped
Release S-UI / build-armv7 (push) Has been skipped
Release S-UI / build-s390x (push) Has been skipped
Release S-UI / build-arm64 (push) Has been skipped
Build S-UI for Windows / build-frontend (push) Failing after 2s
Build S-UI for Windows / build-windows-amd64 (push) Has been skipped
Build S-UI for Windows / build-windows-arm64 (push) Has been skipped
Some checks failed
Release S-UI / build-frontend (push) Failing after 1m53s
Release S-UI / build-386 (push) Has been skipped
Release S-UI / build-amd64 (push) Has been skipped
Release S-UI / build-armv5 (push) Has been skipped
Release S-UI / build-armv6 (push) Has been skipped
Release S-UI / build-armv7 (push) Has been skipped
Release S-UI / build-s390x (push) Has been skipped
Release S-UI / build-arm64 (push) Has been skipped
Build S-UI for Windows / build-frontend (push) Failing after 2s
Build S-UI for Windows / build-windows-amd64 (push) Has been skipped
Build S-UI for Windows / build-windows-arm64 (push) Has been skipped
Signed-off-by: Pavel Kirilin <s3riussan@gmail.com>
This commit is contained in:
78
sub/subHandler.go
Normal file
78
sub/subHandler.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package sub
|
||||
|
||||
import (
|
||||
"github.com/alireza0/s-ui/logger"
|
||||
"github.com/alireza0/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)
|
||||
g.HEAD("/:subid", s.subHeaders)
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
s.addHeaders(c, headers)
|
||||
|
||||
c.String(200, *result)
|
||||
}
|
||||
|
||||
func (s *SubHandler) subHeaders(c *gin.Context) {
|
||||
subId := c.Param("subid")
|
||||
client, err := s.SubService.getClientBySubId(subId)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
c.String(400, "Error!")
|
||||
return
|
||||
}
|
||||
|
||||
headers := s.SubService.getClientHeaders(client)
|
||||
s.addHeaders(c, headers)
|
||||
|
||||
c.Status(200)
|
||||
}
|
||||
|
||||
func (s *SubHandler) addHeaders(c *gin.Context, headers []string) {
|
||||
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])
|
||||
}
|
||||
Reference in New Issue
Block a user