From 525cccf34419b40a2c5302ba5fde5f20a4595744 Mon Sep 17 00:00:00 2001 From: Sosokker Date: Sun, 2 Feb 2025 07:44:16 +0700 Subject: [PATCH] fix: change method to enable cors --- cmd/go.mod | 2 +- cmd/go.sum | 4 ++-- cmd/main.go | 34 ++++++++++++++++------------------ 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/cmd/go.mod b/cmd/go.mod index 2b71de0..cf77a3e 100644 --- a/cmd/go.mod +++ b/cmd/go.mod @@ -2,4 +2,4 @@ module github.com/Sosokker/openweather-dashboard go 1.23.5 -require github.com/joho/godotenv v1.5.1 +require github.com/rs/cors v1.11.1 diff --git a/cmd/go.sum b/cmd/go.sum index d61b19e..014abec 100644 --- a/cmd/go.sum +++ b/cmd/go.sum @@ -1,2 +1,2 @@ -github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= -github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= diff --git a/cmd/main.go b/cmd/main.go index f31c438..a8976c0 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -11,7 +11,7 @@ import ( "strconv" "strings" - "github.com/joho/godotenv" + "github.com/rs/cors" ) type Coordinate struct { @@ -56,15 +56,8 @@ func (d *DataEntry) normalizeRainPerHour(min, max float32) { } func loadEnv() string { - apiKeys, err := godotenv.Read() - if err != nil { - log.Fatalln("Error: can't load environment or .env file") - } + apiKey := os.Getenv("OPENWEATHERMAP_API_KEY") - apiKey, exist := apiKeys["OPENWEATHERMAP_API_KEY"] - if !exist { - log.Fatalln("Error: OPENWEATHERMAP_API_KEY does not existed!") - } if strings.TrimSpace(apiKey) == "" { log.Fatalln("Error: OPENWEATHERMAP_API_KEY can't be empty!") } @@ -132,20 +125,14 @@ func readCoordData(filepath string, coordCh chan<- Coordinate) { close(coordCh) } -// https://www.stackhawk.com/blog/golang-cors-guide-what-it-is-and-how-to-enable-it/ -func enableCors(w *http.ResponseWriter) { - (*w).Header().Set("Access-Control-Allow-Origin", "*") -} - // lat, lon, rain+place // state-id, rainfall (scale 100) func rawDataHandler(w http.ResponseWriter, r *http.Request) { - enableCors(&w) apiKey := loadEnv() coordCh := make(chan Coordinate) - go readCoordData("data/data.csv", coordCh) + go readCoordData("data/test.csv", coordCh) var max float32 = 0.0 var min float32 = 10000000.0 @@ -178,6 +165,17 @@ func rawDataHandler(w http.ResponseWriter, r *http.Request) { } func main() { - http.HandleFunc("/api/data", rawDataHandler) // /api/data?scale=100 - log.Fatal(http.ListenAndServe(":8080", nil)) + // https://www.stackhawk.com/blog/golang-cors-guide-what-it-is-and-how-to-enable-it/ + mux := http.NewServeMux() + mux.HandleFunc("/api/data", rawDataHandler) // /api/data?scale=100 + + handler := cors.Default().Handler(mux) + c := cors.New(cors.Options{ + AllowedOrigins: []string{"*"}, + AllowCredentials: true, + AllowedHeaders: []string{"Authorization", "Content-Type", "Access-Control-Allow-Origin"}, + AllowedMethods: []string{"GET", "UPDATE", "PUT", "POST", "DELETE"}, + }) + handler = c.Handler(handler) + log.Fatal(http.ListenAndServe(":8080", handler)) }