added transmission webhooks
parent
c36ac25cef
commit
5707a7eb4d
|
|
@ -6,10 +6,12 @@ import (
|
|||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
// Returns all current transmissions
|
||||
func GetTransmissions(c *fiber.Ctx) error {
|
||||
return c.JSON(globals.Transmissions)
|
||||
}
|
||||
|
||||
// Returns a specific transmission by channel
|
||||
func GetTransmissionByChannel(c *fiber.Ctx) error {
|
||||
channel := c.Params("channel")
|
||||
if channel == "" {
|
||||
|
|
@ -24,28 +26,52 @@ func GetTransmissionByChannel(c *fiber.Ctx) error {
|
|||
return c.JSON(transmission)
|
||||
}
|
||||
|
||||
// func GetGroups(c *fiber.Ctx) error {
|
||||
// var groups []models.SystemGroup
|
||||
func WatchersCount(c *fiber.Ctx) error {
|
||||
channel := c.Params("channel")
|
||||
if channel == "" {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
|
||||
// globals.DB.Find(&groups)
|
||||
if transmission, exists := globals.Transmissions[channel]; exists {
|
||||
return c.JSON(transmission.Watchers)
|
||||
}
|
||||
|
||||
// return c.JSON(groups)
|
||||
// }
|
||||
return fiber.ErrNotFound
|
||||
}
|
||||
|
||||
// func CreateUser(c *fiber.Ctx) error {
|
||||
// var body map[string]interface{}
|
||||
// Called when a user starts to watch a transmission
|
||||
func Watch(c *fiber.Ctx) error {
|
||||
|
||||
// if err := c.BodyParser(&body); err != nil {
|
||||
// return fiber.ErrBadRequest
|
||||
// }
|
||||
channel := c.Params("channel")
|
||||
|
||||
// email := body["email"].(string)
|
||||
if channel == "" {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
|
||||
// user := services.GetUserByEmail(email)
|
||||
if transmission, exists := globals.Transmissions[channel]; exists {
|
||||
transmission.Watchers = transmission.Watchers + 1
|
||||
return c.JSON(transmission.Watchers)
|
||||
}
|
||||
|
||||
// if user.ID == 0 {
|
||||
// fmt.Println("inexistent user")
|
||||
// }
|
||||
return fiber.ErrNotFound
|
||||
}
|
||||
|
||||
// return c.JSON(user)
|
||||
// }
|
||||
// Called when a user stops watching a transmission
|
||||
func Leave(c *fiber.Ctx) error {
|
||||
|
||||
channel := c.Params("channel")
|
||||
|
||||
if channel == "" {
|
||||
return fiber.ErrBadRequest
|
||||
}
|
||||
|
||||
if transmission, exists := globals.Transmissions[channel]; exists {
|
||||
transmission.Watchers = transmission.Watchers - 1
|
||||
if transmission.Watchers < 0 {
|
||||
transmission.Watchers = 0
|
||||
}
|
||||
return c.JSON(transmission.Watchers)
|
||||
}
|
||||
|
||||
return fiber.ErrNotFound
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ func OnPubStart(c *fiber.Ctx) error {
|
|||
// Check if the channel has authorized time to transmit
|
||||
if ok {
|
||||
// If the channel is authorized, add it to the global transmissions list
|
||||
globals.Transmissions[p.StreamName] = currentTransmission
|
||||
globals.Transmissions[p.StreamName] = ¤tTransmission
|
||||
|
||||
return c.SendString("On_Pub_Start: " + string(c.Body()))
|
||||
}
|
||||
|
|
@ -125,6 +125,10 @@ func OnPubStop(c *fiber.Ctx) error {
|
|||
|
||||
// TODO: Updates the transmission on database for future calculation of remaining daily time
|
||||
|
||||
if int(minutes) == 0 {
|
||||
minutes = 1
|
||||
}
|
||||
|
||||
msg := fmt.Sprintf("Transmissão encerrada. Duração %d minutos.\n", int(minutes))
|
||||
|
||||
services.AddTransmissionlog(p.StreamName, msg)
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@ var (
|
|||
|
||||
DB *gorm.DB
|
||||
|
||||
Transmissions map[string]models.CurrentTransmission
|
||||
Transmissions map[string]*models.CurrentTransmission
|
||||
)
|
||||
|
|
|
|||
2
main.go
2
main.go
|
|
@ -98,7 +98,7 @@ func main() {
|
|||
routes.Setup(app)
|
||||
|
||||
// Starts transmissions processing
|
||||
globals.Transmissions = make(map[string]models.CurrentTransmission, 100)
|
||||
globals.Transmissions = make(map[string]*models.CurrentTransmission, 100)
|
||||
|
||||
log.Println("Starting transmissions limits verification process")
|
||||
ticker := time.NewTicker(1 * time.Minute)
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ func Setup(app *fiber.App) {
|
|||
|
||||
// Webhooks
|
||||
app.Post("/on_server_start", controllers.ServerStart)
|
||||
// app.Post("/on_rtmp_connect", controllers.OnRtmpConnect)
|
||||
// app.Post("/on_update", controllers.OnUpdate)
|
||||
app.Post("/on_pub_start", controllers.OnPubStart)
|
||||
app.Post("/on_pub_stop", controllers.OnPubStop)
|
||||
app.Post("/on_sub_start", controllers.OnSubStart)
|
||||
|
|
@ -33,4 +31,9 @@ func Setup(app *fiber.App) {
|
|||
// Interfaces of transmissions
|
||||
app.Get("/transmissions", controllers.GetTransmissions)
|
||||
app.Get("/transmission/:channel", controllers.GetTransmissionByChannel)
|
||||
|
||||
// Interfaces to player
|
||||
app.Get("/c/:channel", controllers.WatchersCount)
|
||||
app.Get("/w/:channel", controllers.Watch)
|
||||
app.Get("/l/:channel", controllers.Leave)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ func VerifyTransmissionAuthorization(channelname, sessionid, transmissionkey, pl
|
|||
|
||||
// TODO: Save the transmission on database for future calculation of remaining daily time
|
||||
|
||||
globals.Transmissions[channelname] = currentTransmission
|
||||
globals.Transmissions[channelname] = ¤tTransmission
|
||||
|
||||
return true, currentTransmission
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue