package main

import (
	"crypto/tls"
	"log"
	uyar_app_main "server/apps/uyar-casting"
	"server/kok"
	"server/sistem/fiko_mongo"
	"server/sistem/fiko_socket_io"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/logger"
	"github.com/gofiber/fiber/v2/middleware/requestid"
)

func main() {
	app := fiber.New(fiber.Config{AppName: "FikoYT Sunucu"})
	// Mogodb İnit Ediliyor
	fiko_mongo.Init(app)
	/**/

	/**/
	app.Use(logger.New())
	app.Use(requestid.New())
	//
	kok.KokRouting(app)

	// app.Get("/", func(c *fiber.Ctx) error {
	// 	return c.SendString("Hello, World!")
	// })

	// app.Get("/metrics", monitor.New(monitor.Config{Title: "FikoYT Metrikler"}))

	// app.Listen(":3000")

	fiko_socket_io.Init(app)

	uyar_app_main.Init(app)

	runSsl(app)
}

func runSsl(app *fiber.App) {
	// Create tls certificate
	cer, err := tls.LoadX509KeyPair("cert/server.crt", "cert/server.key")
	if err != nil {
		log.Fatal(err)
	}
	config := &tls.Config{Certificates: []tls.Certificate{cer}}
	// Create custom listener
	ln, err := tls.Listen("tcp", ":3000", config)
	if err != nil {
		panic(err)
	}

	// Start server with https/ssl enabled on http://localhost:443
	log.Fatal(app.Listener(ln))
}
