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 }