apifiber/controllers/transmissionController.go

78 lines
1.5 KiB
Go

package controllers
import (
"api/globals"
"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 == "" {
return fiber.ErrBadRequest
}
transmission, exists := globals.Transmissions[channel]
if !exists {
return fiber.ErrNotFound
}
return c.JSON(transmission)
}
func WatchersCount(c *fiber.Ctx) error {
channel := c.Params("channel")
if channel == "" {
return fiber.ErrBadRequest
}
if transmission, exists := globals.Transmissions[channel]; exists {
return c.JSON(transmission.Watchers)
}
return fiber.ErrNotFound
}
// Called when a user starts to watch a transmission
func Watch(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
return c.JSON(transmission.Watchers)
}
return fiber.ErrNotFound
}
// 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
}