Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package server
import (
"context"
"net/http"
"gateway/handlers"
"fiskerinc.com/modules/httphandlers"
"fiskerinc.com/modules/logger"
httptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http"
)
// StartHTTP runs server for websockets and docs
func StartHTTP(ctx context.Context, port string) {
mux := httptrace.NewServeMux()
mux.Handle("/docs/", http.StripPrefix("/docs", handlers.DocsHandler()))
mux.HandleFunc("/session", httphandlers.PanicHandler(handlers.SecureSessionWebsocketHandler))
mux.HandleFunc("/secret_mobile", httphandlers.PanicHandler(handlers.InsecureSessionWebsocketHandler))
logger.Info().Msgf("gateway websockets on http://0.0.0.0%s", port)
logger.Fatal().AnErr("http.ListenAndServe", http.ListenAndServe(port, mux)).Send()
}

View File

@@ -0,0 +1,60 @@
package server
import (
"context"
"errors"
"io"
"time"
"gateway/services"
"fiskerinc.com/modules/logger"
)
func logRedisErr(err error) {
if errors.Is(err, io.EOF) {
logger.Warn().Err(err).Send()
} else {
logger.Error().Err(err).Send()
}
}
// StartRedisQueue intiates Redis queue listener
func StartRedisQueue(ctx context.Context) {
logger.Info().Msg("initializing redis queues")
defer func() {
if err := recover(); err != nil {
logger.Error().Msgf("PanicRedis %v", err)
}
}()
for {
err := services.GetRedisQueues().Listen(ctx, services.GetConnections().SendMsgToClient)
for err != nil {
logRedisErr(err)
err = services.GetRedisQueues().Restart()
time.Sleep(time.Second * 10)
}
}
}
// StartRedisSubscriptions initiates Redis subscription listener
func StartRedisSubscriptions(ctx context.Context) {
logger.Info().Msg("initializing redis subscriptions")
defer func() {
if err := recover(); err != nil {
logger.Error().Msgf("PanicRedis %v", err)
}
}()
for {
err := services.GetRedisPubSub().Listen(ctx, services.GetConnections().SendMsgToClient)
for err != nil {
logRedisErr(err)
err = services.GetRedisPubSub().Restart()
time.Sleep(time.Second * 10)
}
}
}