package api import ( "net/http" "time" "git.tek.govt.hu/dowerx/chat/server/controller" "git.tek.govt.hu/dowerx/chat/server/dao" "git.tek.govt.hu/dowerx/chat/server/util" "github.com/gin-gonic/gin" ) var userController controller.UserController var chatController controller.ChatController var authController controller.AuthController func initControlles() *util.ChatError { userDAO, err := dao.GetUserDAO() if err != nil { return err } channelDAO, err := dao.GetChannelDAO() if err != nil { return err } sessionDAO, err := dao.GetSessionDAO() if err != nil { return err } userController = controller.MakeUserController(userDAO) authController = controller.MakeAuthController(userDAO, sessionDAO) chatController = controller.MakeChatController(channelDAO) return nil } func Listen(address string, base string) error { if err := initControlles(); err != nil { return err } router := gin.Default() api := router.Group(base) auth := api.Group("auth") auth.POST("register", register) auth.POST("login", login) auth.GET("logout", isLoggedIn, logout) auth.GET("bump", isLoggedIn, bump) user := api.Group("user") user.Use(isLoggedIn) user.GET("info/:username", userInfo) server := &http.Server{ Addr: address, Handler: router, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, } return server.ListenAndServe() }