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

104 lines
3.2 KiB
Go
Raw Normal View History

2024-09-27 14:21:03 +03:00
// модуль для работы веб-сервера с функцией Liveness
// Для GET запросов веб-сервер возвращает статус 200 "ok", и текст `{"status":"ok"}`
2023-03-17 11:20:09 +03:00
package liveness
import (
2024-09-27 14:21:03 +03:00
"context"
"github.com/ManyakRus/starter/contextmain"
2023-05-02 09:51:50 +03:00
"github.com/ManyakRus/starter/fiber_connect"
2024-03-13 16:24:14 +03:00
"github.com/ManyakRus/starter/log"
2024-09-27 14:21:03 +03:00
"github.com/ManyakRus/starter/stopapp"
2023-11-14 13:39:20 +03:00
"github.com/gofiber/fiber/v2"
2024-03-13 16:24:14 +03:00
"os"
2024-09-27 14:21:03 +03:00
"sync"
2023-03-17 11:20:09 +03:00
)
2024-09-27 14:21:03 +03:00
// LIVENESS_URL - адрес URL веб-сервера для функции Liveness
2023-03-17 11:20:09 +03:00
const LIVENESS_URL = "/liveness/"
2024-03-13 16:24:14 +03:00
// Settings хранит все нужные переменные окружения
var Settings SettingsINI
2023-03-17 11:20:09 +03:00
2024-03-13 16:24:14 +03:00
// SettingsINI - структура для хранения всех нужных переменных окружения
type SettingsINI struct {
LIVENESS_HOST string
LIVENESS_PORT string
}
// WEBSERVER_PORT_DEFAULT - порт веб-сервера по умолчанию
var WEBSERVER_PORT_DEFAULT = "3000"
2024-09-27 14:21:03 +03:00
// TEXT_OK - текст для ответа из веб-сервера
const TEXT_OK = `{"status":"ok"}`
// Start - запуск работы веб-сервера с функцией Liveness
2023-03-17 11:20:09 +03:00
func Start() {
2024-09-27 16:32:56 +03:00
//var err error
2024-03-13 16:24:14 +03:00
2024-09-27 16:32:56 +03:00
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
2024-09-30 12:05:31 +03:00
//запомним к себе контекст
2024-09-27 16:32:56 +03:00
contextmain.Ctx = ctx
2024-09-30 12:05:31 +03:00
if ctx == nil {
contextmain.GetContext()
}
//запомним к себе WaitGroup
2024-09-27 16:32:56 +03:00
stopapp.SetWaitGroup_Main(WaitGroup)
2024-09-30 12:05:31 +03:00
if WaitGroup == nil {
stopapp.StartWaitStop()
}
2024-09-27 16:32:56 +03:00
//
2024-03-13 16:24:14 +03:00
FillSettings()
fiber_connect.Settings.WEBSERVER_HOST = Settings.LIVENESS_HOST
fiber_connect.Settings.WEBSERVER_PORT = Settings.LIVENESS_PORT
2023-03-17 11:20:09 +03:00
Client := fiber_connect.Client
if Client == nil {
fiber_connect.Connect()
Client = fiber_connect.Client
}
Client.Get(LIVENESS_URL, Handlerliveness)
fiber_connect.Start()
log.Info("Liveness start OK. URL: ", LIVENESS_URL)
2024-09-27 16:32:56 +03:00
//return err
2024-09-27 14:21:03 +03:00
}
// Handlerliveness - обрабатывает GET запросы
2023-03-17 11:20:09 +03:00
func Handlerliveness(c *fiber.Ctx) error {
2024-09-27 14:21:03 +03:00
err := c.SendString(TEXT_OK)
return err
2023-03-17 11:20:09 +03:00
}
2024-03-13 16:24:14 +03:00
// 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
}
}