1
0
mirror of https://github.com/ManyakRus/starter.git synced 2025-11-25 23:02:22 +02:00
Files
starter/liveness/liveness.go
2025-04-03 16:23:44 +03:00

107 lines
3.3 KiB
Go

// модуль для работы веб-сервера с функцией Liveness
// Для GET запросов веб-сервер возвращает статус 200 "ok", и текст `{"status":"ok"}`
package liveness
import (
"context"
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/fiber_connect"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/stopapp"
"github.com/gofiber/fiber/v2"
"os"
"sync"
)
// LIVENESS_URL - адрес URL веб-сервера для функции Liveness
const LIVENESS_URL = "/liveness/"
// Settings хранит все нужные переменные окружения
var Settings SettingsINI
// SettingsINI - структура для хранения всех нужных переменных окружения
type SettingsINI struct {
LIVENESS_HOST string
LIVENESS_PORT string
}
// WEBSERVER_PORT_DEFAULT - порт веб-сервера по умолчанию
var WEBSERVER_PORT_DEFAULT = "3000"
// TEXT_OK - текст для ответа из веб-сервера
const TEXT_OK = `{"status":"ok"}`
// Start - запуск работы веб-сервера с функцией Liveness
func Start() {
//var err error
ctx := contextmain.GetContext()
WaitGroup := stopapp.GetWaitGroup_Main()
Start_ctx(&ctx, WaitGroup)
}
// Start_ctx - запускает работу веб-сервера с функций liveness
// Свой контекст и WaitGroup нужны для остановки работы сервиса Graceful shutdown
// Для тех кто пользуется этим репозиторием для старта и останова сервиса можно просто Start()
func Start_ctx(ctx *context.Context, WaitGroup *sync.WaitGroup) {
//var err error
//запомним к себе контекст
if contextmain.Ctx != ctx {
contextmain.SetContext(ctx)
}
//contextmain.Ctx = ctx
if ctx == nil {
contextmain.GetContext()
}
//запомним к себе WaitGroup
stopapp.SetWaitGroup_Main(WaitGroup)
if WaitGroup == nil {
stopapp.StartWaitStop()
}
//
FillSettings()
fiber_connect.Settings.WEBSERVER_HOST = Settings.LIVENESS_HOST
fiber_connect.Settings.WEBSERVER_PORT = Settings.LIVENESS_PORT
fiber_connect.Start()
Client := fiber_connect.Client
//if Client == nil {
// fiber_connect.Connect()
// Client = fiber_connect.Client
//}
Client.Get(LIVENESS_URL, Handlerliveness)
log.Info("Liveness start OK. URL: ", LIVENESS_URL)
//return err
}
// Handlerliveness - обрабатывает GET запросы
func Handlerliveness(c *fiber.Ctx) error {
err := c.SendString(TEXT_OK)
return err
}
// FillSettings загружает переменные окружения в структуру из переменных окружения
func FillSettings() {
Settings = SettingsINI{}
Settings.LIVENESS_HOST = os.Getenv("LIVENESS_HOST")
Settings.LIVENESS_PORT = os.Getenv("LIVENESS_PORT")
if Settings.LIVENESS_HOST == "" {
log.Debug("Need fill LIVENESS_HOST ! in OS Environment ")
Settings.LIVENESS_HOST = os.Getenv("WEB_SERVER_HOST")
}
if Settings.LIVENESS_PORT == "" {
log.Warn("Need fill LIVENESS_PORT ! in OS Environment. Use default: ", WEBSERVER_PORT_DEFAULT)
Settings.LIVENESS_PORT = WEBSERVER_PORT_DEFAULT
}
}