mirror of
https://github.com/sablierapp/sablier.git
synced 2025-12-26 15:16:24 +01:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/sablierapp/sablier/pkg/sablier"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type DynamicRequest struct {
|
|
Names []string `form:"names"`
|
|
Group string `form:"group"`
|
|
SessionDuration time.Duration `form:"session_duration"`
|
|
Timeout time.Duration `form:"timeout"`
|
|
}
|
|
|
|
func StartDynamic(router *gin.RouterGroup, s *sablier.Sablier) {
|
|
router.GET("/dynamic", func(c *gin.Context) {
|
|
request := BlockingRequest{
|
|
// Timeout: s.StrategyConfig.Blocking.DefaultTimeout,
|
|
}
|
|
|
|
if err := c.ShouldBind(&request); err != nil {
|
|
_ = c.AbortWithError(http.StatusBadRequest, err)
|
|
return
|
|
}
|
|
|
|
opts := sablier.StartSessionOptions{
|
|
Wait: false,
|
|
StartOptions: sablier.StartOptions{
|
|
DesiredReplicas: 1,
|
|
ExpiresAfter: request.SessionDuration,
|
|
ConsiderReadyAfter: 0,
|
|
Timeout: request.Timeout,
|
|
},
|
|
}
|
|
|
|
session, err := s.StartSessionByGroup(c, request.Group, opts)
|
|
if err != nil {
|
|
_ = c.AbortWithError(http.StatusBadRequest, err)
|
|
return
|
|
}
|
|
|
|
AddSablierHeader(c, session)
|
|
|
|
c.JSON(http.StatusOK, map[string]interface{}{"session": session})
|
|
})
|
|
}
|