mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 08:01:16 +00:00
47 lines
921 B
Go
47 lines
921 B
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
"github.com/warmbly/warmbly/internal/api/middleware"
|
|
"github.com/warmbly/warmbly/internal/app/socket"
|
|
"github.com/warmbly/warmbly/internal/errx"
|
|
)
|
|
|
|
func (h *Handler) GenerateWebsocket(c *gin.Context) {
|
|
userID := middleware.GetUserID(c)
|
|
uid, err := uuid.Parse(userID)
|
|
if err != nil {
|
|
errx.Handle(c, errx.ErrUser)
|
|
return
|
|
}
|
|
|
|
token, xerr := h.SocketService.GenerateWebsocketToken(c.Request.Context(), uid)
|
|
if xerr != nil {
|
|
errx.Handle(c, xerr)
|
|
return
|
|
}
|
|
|
|
wsURL := token
|
|
if h.WebsocketURI != "" {
|
|
u, err := url.Parse(h.WebsocketURI)
|
|
if err != nil {
|
|
errx.Handle(c, errx.InternalError())
|
|
return
|
|
}
|
|
|
|
q := u.Query()
|
|
q.Set("token", token)
|
|
u.RawQuery = q.Encode()
|
|
wsURL = u.String()
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"url": wsURL,
|
|
"expires_in": socket.SocketTTL.Seconds(),
|
|
})
|
|
}
|