109 lines
3.2 KiB
Go

package http
import (
"donat-widget/internal/api/http/handlers/files"
"donat-widget/internal/api/http/handlers/widget"
"github.com/labstack/echo/v4/middleware"
"github.com/labstack/echo/v4"
"github.com/swaggo/echo-swagger"
)
import (
"donat-widget/internal/model"
"donat-widget/pkg/validator"
)
import (
. "donat-widget/internal/api/http/handlers/donat"
. "donat-widget/internal/api/http/handlers/target"
)
var PREFIX = "/api/widget"
func NewApp(
db model.Db,
widgetService model.WidgetService,
donatService model.DonatService,
targetService model.TargetService,
fileService model.FileService,
authClient model.AuthClient,
) {
server := echo.New()
server.Use(
middleware.CORSWithConfig(
middleware.CORSConfig{
AllowOrigins: []string{"*"}, // Разрешить все домены
AllowMethods: []string{"*"},
AllowHeaders: []string{"*"},
},
),
)
server.Validator = validator.NewValidator()
server.GET(PREFIX+"/docs/*", echoSwagger.WrapHandler)
IncludeWidgetHandlers(server, widgetService)
IncludeDonatHandlers(server, donatService, fileService)
IncludeTargetHandlers(server, targetService, donatService, authClient)
IncludeFileHandlers(server, fileService)
server.Logger.Fatal(server.Start(":8002"))
}
func IncludeTargetHandlers(
server *echo.Echo,
targetService model.TargetService,
donatService model.DonatService,
authClient model.AuthClient,
) {
server.POST(PREFIX+"/target/create", CreateTarget(targetService, authClient))
server.GET(PREFIX+"/target/all", GetAllTarget(targetService))
server.POST(PREFIX+"/target/addAmount", AddAmountTarget(targetService, donatService))
}
func IncludeDonatHandlers(
server *echo.Echo,
donatService model.DonatService,
fileService model.FileService,
) {
server.POST(PREFIX+"/donat/create", CreateDonat(donatService))
server.GET(PREFIX+"/inner-donate-page", GetInnerDonatePage(donatService))
server.GET(PREFIX+"/outer-donate-page/:streamer-login", GetOuterDonatePage(donatService))
server.PATCH(PREFIX+"/donat-page", UpdateDonatePage(donatService, fileService))
server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService))
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))
server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService))
}
func IncludeWidgetHandlers(
server *echo.Echo,
widgetService model.WidgetService,
) {
server.POST(PREFIX+"/widgets", widget.CreateWidget(widgetService))
server.GET(PREFIX+"/widgets", widget.GetStreamersWidgets(widgetService))
server.PATCH(PREFIX+"/widgets/:widgetID", widget.UpdateWidget(widgetService))
//server.GET(PREFIX+"/html/:streamerID", model.GetWidgetHTML(widgetService))
//server.GET(PREFIX+"/info/:widgetID", model.GetWidgetInfo(widgetService))
//
//server.POST(PREFIX+"/media/:mediaType/file/set", model.SetMediaFile(widgetService))
//server.GET(PREFIX+"/media/:mediaType/file/get/:widgetID", model.GetMediaFile(widgetService))
//
//server.POST(PREFIX+"/media/:mediaType/url/set", model.SetMediaUrl(widgetService))
}
func IncludeFileHandlers(
server *echo.Echo,
fileService model.FileService,
) {
server.POST(PREFIX+"/files", files.AddNewFile(fileService))
server.GET(PREFIX+"/files/:file_id", files.GetFile(fileService))
server.GET(PREFIX+"/files/widgets", files.GetWidgetFiles(fileService))
}