added check stream existence

pull/2/head
Nilo Roberto C Paim 2022-02-28 17:13:18 -03:00
parent 530a696b8c
commit 59af8c0c3a
7 changed files with 90 additions and 42 deletions

View File

@ -13,13 +13,9 @@ import (
"golang.org/x/crypto/bcrypt"
)
func Version(c *fiber.Ctx) error {
return c.JSON(fiber.Map{
"version": "1.0.3",
})
}
// Login - Login. Returns a JWT token on the response body
func Login(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
@ -71,7 +67,9 @@ func Login(c *fiber.Ctx) error {
"token": token})
}
// Register/AdUser - Adds or register a user to the database
func AddUser(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
@ -111,6 +109,7 @@ func AddUser(c *fiber.Ctx) error {
return c.JSON(user)
}
// GetOwnUser - Returns the current user
func GetOwnUser(c *fiber.Ctx) error {
var user models.User
@ -135,7 +134,9 @@ func GetOwnUser(c *fiber.Ctx) error {
return c.JSON(user)
}
// GetAllUsers - Returns all users
func GetAllUsers(c *fiber.Ctx) error {
var users []models.User
_, err := utils.ProcessToken(c)

View File

@ -64,6 +64,7 @@ func AddEvent(c *fiber.Ctx) error {
Name: data["name"],
UserId: user.Id,
User: user,
Channel: user.Channel,
ExpectedDate: startdt,
EventType: data["eventtype"],
}

View File

@ -0,0 +1,34 @@
package controllers
import (
"errors"
"os"
"github.com/gofiber/fiber/v2"
)
func CheckStream(c *fiber.Ctx) error {
var data map[string]string
if err := c.BodyParser(&data); err != nil {
return err
}
var fil *os.File
defer fil.Close()
fil, err := os.Open("/var/nginx/hls/" + data["channel"] + "/index.m3u8")
if errors.Is(err, os.ErrNotExist) {
c.Status(fiber.StatusNotFound)
return c.JSON(fiber.Map{
"message": "Stream não existente",
})
}
c.Status(fiber.StatusOK)
return c.JSON(fiber.Map{
"message": "Stream existente",
})
}

View File

@ -0,0 +1,9 @@
package controllers
import "github.com/gofiber/fiber/v2"
func Version(c *fiber.Ctx) error {
return c.JSON(fiber.Map{
"version": "1.0.4",
})
}

70
main.go
View File

@ -1,36 +1,34 @@
package main
import (
"api/database"
"api/routes"
"log"
"os"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/logger"
)
func main() {
app := fiber.New(fiber.Config{
StrictRouting: false,
DisableStartupMessage: true,
})
app.Use(cors.New(cors.Config{
AllowCredentials: true,
}))
app.Use(logger.New())
app.Static("/", "./frontend")
if err := database.ConnectDB(); err != nil {
panic("Could not connect to database")
}
routes.Setup(app)
log.Println("Server started in port " + os.Getenv("API_PORT"))
app.Listen(":" + os.Getenv("API_PORT"))
}
package main
import (
"api/database"
"api/routes"
"log"
"os"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/logger"
)
func main() {
app := fiber.New(fiber.Config{
StrictRouting: false,
DisableStartupMessage: true,
})
app.Use(cors.New(cors.Config{
AllowCredentials: true,
}))
app.Use(logger.New())
if err := database.ConnectDB(); err != nil {
panic("Could not connect to database")
}
routes.Setup(app)
log.Println("Server started in port " + os.Getenv("API_PORT"))
app.Listen(":" + os.Getenv("API_PORT"))
}

View File

@ -8,6 +8,7 @@ type Event struct {
Description string `gorm:"not null" json:"description"`
ExpectedDate time.Time `gorm:"not null" json:"startDt"`
UserId uint `gorm:"size:40;not null" json:"user"`
Channel string `gorm:"size:40;not null" json:"channel"`
User User
EventType string `gorm:"size:1;not null;default:O" json:"eventtype"` // O = Open, C = Closed
}

View File

@ -9,6 +9,7 @@ import (
jwtware "github.com/gofiber/jwt/v3"
)
// Setup sets up the routes
func Setup(app *fiber.App) {
app.Get("/version", controllers.Version)
@ -16,6 +17,9 @@ func Setup(app *fiber.App) {
app.Post("/login", controllers.Login)
app.Post("/register", controllers.AddUser)
app.Post("/check", controllers.CheckStream)
// Protected routes. Needs login before.
protected := app.Group("/")
protected.Use(jwtware.New(jwtware.Config{
SigningKey: []byte(os.Getenv("API_SECRET")),