package utils

import (
	
	
	

	
	
	
	
	
	
	
	
	
	
	
	
	
)

/*
Create Server

Starts fiber web server and listens for requests
*/
func () {
	// Create Fiber App
	 := fiber.New(fiber.Config{
		AppName:      "Liman Render Engine",
		ServerHeader: "divergent",
		Prefork:      false,
		ErrorHandler: server.ErrorHandler,
		JSONEncoder:  json.Marshal,
		JSONDecoder:  json.Unmarshal,
	})

	.Use(recover.New())
	.Use(helmet.New())
	.Use(compress.New())
	.Use(auth.New())
	.Use(permission.New())
	.Use(app_logger.New())

	// Mount routes
	routes.Install()

	// Start server
	 := .ListenTLS("127.0.0.1:2806", constants.CERT_PATH+"/liman.crt", constants.CERT_PATH+"/liman.key")
	if  != nil {
		logger.Sugar().Errorw("app initialization error", "details", )

		if strings.Contains(.Error(), "listen tcp4 :2806: bind: address already in use") {
			logger.Sugar().Infow("restarting app to freeup port")

			linux.Execute("fuser -k 2806/tcp")
			time.Sleep(time.Second)

			 := helpers.RestartSelf()
			if  != nil {
				logger.Sugar().Infow("cannot restart application")
			}
		}
	}
}