initial commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ResponseData struct {
|
||||
SunsetTime time.Time `json:"sunset"`
|
||||
}
|
||||
|
||||
func getSunsetData(lat string, lng string) (*ResponseData, error) {
|
||||
u, _ := url.Parse("https://api.sunrise-sunset.org/v2")
|
||||
|
||||
q := u.Query()
|
||||
q.Set("lat", lat)
|
||||
q.Set("lng", lng)
|
||||
q.Set("formatted", "0")
|
||||
|
||||
u.RawQuery = q.Encode()
|
||||
|
||||
URL := u.String()
|
||||
|
||||
r, err := http.Get(URL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer r.Body.Close()
|
||||
|
||||
if r.StatusCode != http.StatusOK {
|
||||
return nil, fmt.Errorf("bad status: %d", r.StatusCode)
|
||||
}
|
||||
|
||||
var apiResponse struct {
|
||||
SunsetTime string `json:"sunset"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&apiResponse); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
parsedTime, err := time.Parse(time.RFC3339, apiResponse.SunsetTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &ResponseData{SunsetTime: parsedTime}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user