2024-02-21 11:45:10 +07:00
|
|
|
package route
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/ecdsa"
|
|
|
|
"os"
|
|
|
|
|
2024-02-21 12:06:40 +07:00
|
|
|
"github.com/KaySar12/NextZen-Common/middleware"
|
|
|
|
"github.com/KaySar12/NextZen-Common/utils/jwt"
|
|
|
|
v1 "github.com/KaySar12/NextZen-UserService/route/v1"
|
|
|
|
"github.com/KaySar12/NextZen-UserService/service"
|
2024-02-21 11:45:10 +07:00
|
|
|
"github.com/gin-contrib/gzip"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
)
|
|
|
|
|
|
|
|
func InitRouter() *gin.Engine {
|
|
|
|
r := gin.Default()
|
|
|
|
r.Use(middleware.Cors())
|
|
|
|
// r.Use(middleware.WriteLog())
|
|
|
|
r.Use(gzip.Gzip(gzip.DefaultCompression))
|
|
|
|
|
|
|
|
// check if environment variable is set
|
|
|
|
if ginMode, success := os.LookupEnv("GIN_MODE"); success {
|
|
|
|
gin.SetMode(ginMode)
|
|
|
|
} else {
|
|
|
|
gin.SetMode(gin.ReleaseMode)
|
|
|
|
}
|
|
|
|
|
|
|
|
r.POST("/v1/users/register", v1.PostUserRegister)
|
|
|
|
r.POST("/v1/users/login", v1.PostUserLogin)
|
|
|
|
r.GET("/v1/users/name", v1.GetUserAllUsername) // all/name
|
|
|
|
r.POST("/v1/users/refresh", v1.PostUserRefreshToken)
|
|
|
|
// No short-term modifications
|
|
|
|
r.GET("/v1/users/image", v1.GetUserImage)
|
|
|
|
|
|
|
|
r.GET("/v1/users/status", v1.GetUserStatus) // init/check
|
|
|
|
|
|
|
|
v1Group := r.Group("/v1")
|
|
|
|
|
|
|
|
v1Group.Use(jwt.JWT(
|
|
|
|
func() (*ecdsa.PublicKey, error) {
|
|
|
|
_, publicKey := service.MyService.User().GetKeyPair()
|
|
|
|
return publicKey, nil
|
|
|
|
},
|
|
|
|
))
|
|
|
|
{
|
|
|
|
v1UsersGroup := v1Group.Group("/users")
|
|
|
|
v1UsersGroup.Use()
|
|
|
|
{
|
|
|
|
v1UsersGroup.GET("/current", v1.GetUserInfo)
|
|
|
|
v1UsersGroup.PUT("/current", v1.PutUserInfo)
|
|
|
|
v1UsersGroup.PUT("/current/password", v1.PutUserPassword)
|
|
|
|
|
|
|
|
v1UsersGroup.GET("/current/custom/:key", v1.GetUserCustomConf)
|
|
|
|
v1UsersGroup.POST("/current/custom/:key", v1.PostUserCustomConf)
|
|
|
|
v1UsersGroup.DELETE("/current/custom/:key", v1.DeleteUserCustomConf)
|
|
|
|
|
|
|
|
v1UsersGroup.POST("/current/image/:key", v1.PostUserUploadImage)
|
|
|
|
v1UsersGroup.PUT("/current/image/:key", v1.PutUserImage)
|
|
|
|
// v1UserGroup.POST("/file/image/:key", v1.PostUserFileImage)
|
|
|
|
v1UsersGroup.DELETE("/current/image", v1.DeleteUserImage)
|
|
|
|
|
|
|
|
v1UsersGroup.PUT("/avatar", v1.PutUserAvatar)
|
|
|
|
v1UsersGroup.GET("/avatar", v1.GetUserAvatar)
|
|
|
|
|
|
|
|
v1UsersGroup.DELETE("/:id", v1.DeleteUser)
|
|
|
|
v1UsersGroup.GET("/:username", v1.GetUserInfoByUsername)
|
|
|
|
v1UsersGroup.DELETE("", v1.DeleteUserAll)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return r
|
|
|
|
}
|