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