Files
ip-info/internal/services/api/main.go
2024-07-13 23:58:47 +07:00

48 lines
894 B
Go

package api
import (
"errors"
"github.com/gin-gonic/gin"
"github.com/rs/zerolog/log"
"net/http"
"os"
"thuanle.me/ip-info/configs/key"
)
var srv *http.Server
func StartApiService() {
log.Info().Msg("Starting API service")
engine := gin.Default()
trustedProxyIP := os.Getenv(key.EnvGinTrustedProxyIp)
if trustedProxyIP != "" {
_ = engine.SetTrustedProxies([]string{trustedProxyIP})
}
engine.GET("/", HandleIp)
engine.GET("/json", HandleJson)
port := os.Getenv(key.EnvApiPort)
srv = &http.Server{
Addr: ":" + port,
Handler: engine,
}
go func() {
// service connections
if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal().Err(err).Msg("Error running API service")
}
}()
log.Info().Str("port", port).Msg("API service started")
}
func Shutdown() {
_ = srv.Close()
log.Info().Msg("API service stopped")
}