apifiber/controllers/webhookController.go

135 lines
3.4 KiB
Go

package controllers
import (
"api/database"
"api/models"
"api/utils"
"fmt"
"log"
"strconv"
"github.com/gofiber/fiber/v2"
)
func ServerStart(c *fiber.Ctx) error {
// Creates a server struct
s := new(models.LalServer)
// Parse the body of the request to the server struct
if err := c.BodyParser(s); err != nil {
log.Printf("Error Start: %s\n", err)
return err
}
log.Printf("Server started")
// Marshal the server struct to JSON
utils.PrettyPrintJson(s)
return c.SendString("Server started: " + string(c.Body()))
}
func OnUpdate(c *fiber.Ctx) error {
p := new(models.Update)
if err := c.BodyParser(p); err != nil {
log.Printf("Error Update: %s\n", err)
return err
}
log.Printf("Update")
utils.PrettyPrintJson(p)
if len(p.Groups) > 0 {
for _, g := range p.Groups {
log.Printf("Update %s %s [(%dx%d) %d]\n", g.Channel, g.UpdPub.StartTime, g.VideoWidth, g.VideoHeight, g.UpdPub.ReadBytesSum)
}
}
return c.SendString("On_Update: " + string(c.Body()))
}
func OnSubStart(c *fiber.Ctx) error {
p := new(models.Update)
if err := c.BodyParser(p); err != nil {
log.Printf("Error SubStart: %s\n", err)
return err
}
log.Printf("SubStart")
utils.PrettyPrintJson(p)
// if len(p.Groups) > 0 {
// for _, g := range p.Groups {
// log.Printf("Update %s %s [(%dx%d) %d]\n", g.Channel, g.UpdPub.StartTime, g.VideoWidth, g.VideoHeight, g.UpdPub.ReadBytesSum)
// }
// }
return c.SendString("On_Substart: " + string(c.Body()))
}
func OnPubStart(c *fiber.Ctx) error {
// ================================================================
// Called when a publisher starts streaming - Start of Transmission
// ================================================================
p := new(models.Pub)
if err := c.BodyParser(p); err != nil {
return err
}
log.Printf("Start %s\n", p.Channel)
return c.SendString("On_Pub_Start: " + string(c.Body()))
}
func OnPubStop(c *fiber.Ctx) error {
// =============================================================
// Called when a publisher stops streaming - End of Transmission
// =============================================================
p := new(models.Pub)
if err := c.BodyParser(p); err != nil {
return err
}
log.Printf("Stop %s\n", p.Channel)
return c.SendString("On_Pub_Stop: " + string(c.Body()))
}
func WixIntegration(c *fiber.Ctx) error {
var data models.Purchase
if err := c.BodyParser(&data); err != nil {
return fiber.ErrBadRequest
}
fmt.Println(data.Data.Contact.Email)
fmt.Println(data.Data.Contact.Name.First + " " + data.Data.Contact.Name.Last)
fmt.Printf(data.Data.PlanOrderID)
fmt.Println(data.Data.PlanPrice.Value)
fmt.Println(data.Data.PlanStartDate)
fmt.Println(data.Data.PlanValidUntil)
fmt.Println(data.Data.PlanTitle)
result := database.DB.Where("email = ?", data.Data.Contact.Email).First(&data)
if result.RowsAffected == 0 {
// User does not exist. Inserts it.
user := models.User{
Email: data.Data.Contact.Email,
Name: data.Data.Contact.Name.First + " " + data.Data.Contact.Name.Last,
Blocked: "N",
Cancelled: "N",
}
database.DB.Create(&user)
}
value, _ := strconv.Atoi(data.Data.PlanPrice.Value)
transaction := models.Transaction{
Email: data.Data.Contact.Email,
PlanOrderID: data.Data.PlanOrderID,
Value: value,
PlanStartDate: data.Data.PlanStartDate,
PlanValidUntil: data.Data.PlanValidUntil,
PlanTitle: data.Data.PlanTitle,
}
database.DB.Create(&transaction)
return c.JSON(data)
}