fixes + Dockerfile

This commit is contained in:
Jan 2024-11-02 19:11:56 +01:00
parent c0049aa393
commit 1f2e2bd221
6 changed files with 80 additions and 25 deletions

12
Dockerfile Normal file
View File

@ -0,0 +1,12 @@
FROM golang:1.22.2
WORKDIR /usr/src/app
# pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change
COPY go.mod ./
RUN go mod download && go mod verify
COPY . .
RUN go build -v -o /usr/local/bin/humiditycalc ./...
CMD ["humiditycalc"]

58
configs/config.go Normal file
View File

@ -0,0 +1,58 @@
package configs
import (
"fmt"
"os"
"github.com/joho/godotenv"
)
func Load() map[string]string {
var env map[string]string = make(map[string]string)
envpath := "./.env"
if _, err := os.Stat(envpath); err == nil {
dotenv, err := godotenv.Read(envpath)
if err != nil {
fmt.Println("Error loading .env file: ", err)
}
env = dotenv
} else {
fmt.Println("No .env file found", err)
}
mode := os.Getenv("MODE")
if mode != "" {
env["MODE"] = os.Getenv("MODE")
}
openweathermapAPIKey := os.Getenv("OPENWEATHERMAP_API_KEY")
if openweathermapAPIKey != "" {
env["OPENWEATHERMAP_API_KEY"] = openweathermapAPIKey
}
latitude := os.Getenv("LATITUDE")
if latitude != "" {
env["LATITUDE"] = latitude
}
longitude := os.Getenv("LONGITUDE")
if longitude != "" {
env["LONGITUDE"] = longitude
}
port := os.Getenv("PORT")
if port != "" {
env["PORT"] = port
}
if len(env) == 0 {
fmt.Println("no environment variables are set")
os.Exit(1)
}
return env
}

18
main.go
View File

@ -5,12 +5,12 @@ import (
"os"
"strings"
"github.com/LeRoid-hub/humiditycalc/configs"
"github.com/LeRoid-hub/humiditycalc/server"
"github.com/joho/godotenv"
)
func main() {
env := loadEnv()
env := configs.Load()
if val, ok := env["MODE"]; ok {
if strings.ToLower(val) == "both" {
checkEnv(env)
@ -28,20 +28,6 @@ func main() {
}
}
func loadEnv() map[string]string {
var env map[string]string
env, err := godotenv.Read()
if err != nil {
fmt.Println("Error loading .env file: ", err)
os.Exit(1)
}
if len(env) == 0 {
fmt.Println(".env file is empty")
os.Exit(1)
}
return env
}
func checkEnv(env map[string]string) {
// Is there an API key for openweathermap?
if val, ok := env["OPENWEATHERMAP_API_KEY"]; ok {

View File

@ -1,7 +1,6 @@
package models
import (
"fmt"
"time"
)
@ -13,7 +12,6 @@ type WeatherCache struct {
}
func (w *WeatherCache) IsExpired() bool {
fmt.Println(time.Since(w.timestamp), time.Duration(w.duration)*time.Second)
return time.Since(w.timestamp) > time.Duration(w.duration)*time.Second
}

4
models/env.go Normal file
View File

@ -0,0 +1,4 @@
package models
type Config struct {
}

View File

@ -61,17 +61,14 @@ func Run(env map[string]string) {
// Get Weather data
humidity, temperature := internal.Weather(env)
// Calculate absolute weather humidity
absoluteWeatherHumidity = internal.AbsoluteHumidity(temperature, humidity)
// Update cache
cacheWeather.SetData(humidity, temperature)
} else {
// Use cached data
humidity, temperature := cacheWeather.GetData()
absoluteWeatherHumidity = internal.AbsoluteHumidity(temperature, humidity)
}
// Use cached data
humidity, temperature = cacheWeather.GetData()
absoluteWeatherHumidity = internal.AbsoluteHumidity(temperature, humidity)
// Create response
WData := WeatherData{Temperature: FormatFloat(temperature, 2), RelativeHumidity: FormatFloat(humidity, 4), AbsoluteHumidity: FormatFloat(absoluteWeatherHumidity, 4)}