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{ "https://donatehelper.com", "https://donatehelper.com", "https://widget.donatehelper.com", "http://widget.donatehelper.com", "http://127.0.0.1:8002", }, AllowHeaders: []string{"Content-Type", "Authorization", "X-Requested-With"}, AllowCredentials: true, ExposeHeaders: []string{"Content-Length"}, MaxAge: 86400, }, ), ) 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, donatService) 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+"/init-streamer", InitNewStreamer(donatService)) server.POST(PREFIX+"/donat/:streamer-login", CreateDonat(donatService)) server.POST(PREFIX+"/test-donat", CreateTestDonat(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+"/voice-settings", GetVoiceSettings(donatService)) server.PATCH(PREFIX+"/voice-settings", UpdateVoiceSettings(donatService)) server.GET(PREFIX+"/filters-settings", GetFiltersSettings(donatService)) server.PATCH(PREFIX+"/filters-settings", UpdateFiltersSettings(donatService)) server.GET(PREFIX+"/moderation-settings", GetModerationSettings(donatService)) server.PATCH(PREFIX+"/moderation-settings", UpdateModerationSettings(donatService)) server.GET(PREFIX+"/donat", GetDonat(donatService)) server.POST(PREFIX+"/donat/viewed", MarkDonatView(donatService)) server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService)) server.GET(PREFIX+"/donat/period-stat", GetDonationsStats(donatService)) server.GET(PREFIX+"/donat-moderate/latest-moderation", GetDonateModeration(donatService)) server.PATCH(PREFIX+"/donat-moderate/:donat-id", ModerateDonat(donatService)) server.GET(PREFIX+"/get-donat-for-playing/:streamer-id", GetDonatForPlaying(donatService)) server.GET(PREFIX+"/text-after-donat/:order-id", GetMessageAfterDonat(donatService)) server.POST(PREFIX+"/update-login-donate", UpdateLoginDonatePage(donatService)) server.PUT(PREFIX+"/update-streamer-online/:streamer-id", UpdateStreamerOnline(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.DELETE(PREFIX+"/widgets/:widgetID", widget.DeleteWidget(widgetService)) server.GET(PREFIX+"/get-widget-html/:widget-page-id", widget.GetWidgetHTML(widgetService)) } func IncludeFileHandlers( server *echo.Echo, fileService model.FileService, donatService model.DonatService, ) { server.POST(PREFIX+"/files", files.AddNewFile(fileService, donatService)) server.GET(PREFIX+"/files/:file_id", files.GetFile(fileService)) server.GET(PREFIX+"/files/widgets", files.GetWidgetFiles(fileService)) }