package api import ( "fmt" "time" "gitea.tecamino.com/paadi/tecamino-logger/logging" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) type API struct { host string port int router *gin.Engine } func NewAPI(host string, port int, logger *logging.Logger) (*API, error) { r := gin.Default() r.Use(cors.New(cors.Config{ //AllowOrigins: []string{"http://localhost:9000"}, // frontend origin AllowOrigins: []string{"*"}, // frontend origin AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowHeaders: []string{"Origin", "Content-Type", "Authorization"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, MaxAge: 12 * time.Hour, })) apiHandler, err := NewAPIHandler(logger) if err != nil { return nil, err } v1 := r.Group("v1") v1.GET("/events", apiHandler.GetEvent) v1.GET("/events/new", apiHandler.StartNewEvent) v1.GET("/events/delete", apiHandler.DeleteEvent) v1.GET("/members", apiHandler.GetMember) v1.GET("/responsible", apiHandler.GetResponsible) v1.POST("/database/open", apiHandler.OpenDatabase) v1.POST("/members/add", apiHandler.AddNewMember) v1.POST("/members/edit", apiHandler.UpdateMember) v1.POST("/members/delete", apiHandler.DeleteMember) v1.POST("/members/import/csv", apiHandler.ImportCSV) v1.POST("/events/attendees/add", apiHandler.AddNewAttendees) v1.POST("/events/attendees/delete", apiHandler.DeleteAttendee) v1.POST("/responsible/add", apiHandler.AddNewResponsible) v1.POST("/responsible/delete", apiHandler.DeleteResponsible) return &API{host: host, port: port, router: r, }, nil } func (api *API) Run() error { return api.router.Run(fmt.Sprintf("%s:%d", api.host, api.port)) }