From a08685c3cdb18acf1f19b4f0fbd73535f60b67eb Mon Sep 17 00:00:00 2001 From: Stian Fredrik Aune Date: Fri, 21 Jan 2022 19:26:06 +0100 Subject: [PATCH] Location, location, location. --- app/config/env.go | 19 ++++++++++++++++++- app/server.go | 5 ++++- models/timeofday.go | 8 +++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/config/env.go b/app/config/env.go index 92485ea..5ae45a8 100644 --- a/app/config/env.go +++ b/app/config/env.go @@ -1,17 +1,34 @@ package config import ( + "log" "os" "strconv" + "time" ) +func Location() *time.Location { + env, ok := os.LookupEnv("LUCIFER_LOCATION") + if !ok { + return time.UTC + } + + loc, err := time.LoadLocation(env) + if err != nil { + log.Printf("Location lookup failed: %s (%s)", env, err.Error()) + return time.UTC + } + + return loc +} + func MySqlHost() string { return strEnv("LUCIFER_MYSQL_HOST") } func MySqlPort() int { return intEnv("LUCIFER_MYSQL_PORT") } func MySqlSchema() string { return strEnv("LUCIFER_MYSQL_SCHEMA") } func MySqlUsername() string { return strEnv("LUCIFER_MYSQL_USERNAME") } func MySQlPassword() string { return strEnv("LUCIFER_MYSQL_PASSWORD") } -func ServerPort() int { return intEnv("LUCIFER_SERVER_PORT") } +func ServerPort() int { return intEnv("LUCIFER_SERVER_PORT") } func strEnv(key string) string { env, ok := os.LookupEnv(key) diff --git a/app/server.go b/app/server.go index ab32941..037ea17 100644 --- a/app/server.go +++ b/app/server.go @@ -7,13 +7,14 @@ import ( "git.aiterp.net/lucifer/new-server/app/config" "git.aiterp.net/lucifer/new-server/app/services" "git.aiterp.net/lucifer/new-server/app/services/publisher" + "git.aiterp.net/lucifer/new-server/models" "github.com/gin-gonic/gin" "log" "time" ) func StartServer() { - setupCtx, cancel := context.WithTimeout(context.Background(), time.Second * 10) + setupCtx, cancel := context.WithTimeout(context.Background(), time.Second*10) defer cancel() err := publisher.Initialize(setupCtx) @@ -38,5 +39,7 @@ func StartServer() { api.EventHandlers(apiGin.Group("/event-handlers")) api.Scenes(apiGin.Group("/scenes")) + models.TimeOfDayTimeZone = config.Location() + log.Fatal(ginny.Run(fmt.Sprintf("0.0.0.0:%d", config.ServerPort()))) } diff --git a/models/timeofday.go b/models/timeofday.go index 1c5f1b2..7d06725 100644 --- a/models/timeofday.go +++ b/models/timeofday.go @@ -9,6 +9,8 @@ import ( "time" ) +var TimeOfDayTimeZone = time.UTC + type TimeOfDay int func (t *TimeOfDay) UnmarshalJSON(v []byte) error { @@ -29,7 +31,6 @@ func (t *TimeOfDay) UnmarshalJSON(v []byte) error { } } - t2, err := ParseTimeOfDay(str) if err != nil { return err @@ -82,11 +83,12 @@ func (t TimeOfDay) IsBetween(from TimeOfDay, to TimeOfDay) bool { } func CurrentTimeOfDay() TimeOfDay { - return TimeOfDayFromDate(time.Now().Local()) + return TimeOfDayFromDate(time.Now().In(TimeOfDayTimeZone)) } func TimeOfDayFromDate(date time.Time) TimeOfDay { - return NewTimeOfDay(date.Hour(), date.Minute(), date.Second()) + localDate := date.In(TimeOfDayTimeZone) + return NewTimeOfDay(localDate.Hour(), localDate.Minute(), localDate.Second()) } func NewTimeOfDay(hours, minutes, seconds int) TimeOfDay {