78 lines
1.5 KiB
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
|
|
}
|