initial commit
This commit is contained in:
commit
885ff3b928
11 changed files with 367 additions and 0 deletions
89
awl.go
Normal file
89
awl.go
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const AWL_URL string = "https://buergerportal.awl-neuss.de/api/v1/calendar"
|
||||
|
||||
func GetStreetNumbers() (map[string]int, error) {
|
||||
url := AWL_URL + "/townarea-streets"
|
||||
response, err := http.Get(url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
content, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var streets []struct {
|
||||
Number int `json:"strasseNummer"`
|
||||
Name string `json:"strasseBezeichnung"`
|
||||
}
|
||||
err = json.Unmarshal(content, &streets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
nameToNumber := make(map[string]int, len(streets))
|
||||
for _, street := range streets {
|
||||
name := strings.ToLower(street.Name)
|
||||
name = strings.Replace(name, " ", "-", -1)
|
||||
name = strings.Replace(name, "--", "-", -1)
|
||||
nameToNumber[name] = street.Number
|
||||
}
|
||||
|
||||
return nameToNumber, nil
|
||||
}
|
||||
|
||||
func AwlTomorrow(street, home int) ([]string, error) {
|
||||
startDate := time.Now().AddDate(0, 0, 1)
|
||||
startDateFmt := startDate.Format("Jan 02 2006")
|
||||
|
||||
requestUrl := fmt.Sprintf(AWL_URL + "?startMonth=%s&streetNum=%d&homeNumber=%d", url.QueryEscape(startDateFmt), street, home)
|
||||
response, err := http.Get(requestUrl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
content, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var jsonBody map[string]map[string][]string
|
||||
err = json.Unmarshal(content, &jsonBody)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse json:\n%s\n%s", err.Error(), content)
|
||||
}
|
||||
|
||||
if len(jsonBody) != 1 {
|
||||
return nil, fmt.Errorf("unexpected awl response:\n%s", string(content))
|
||||
}
|
||||
|
||||
currentMonth := fmt.Sprintf("%d-%d", startDate.Month()-1, startDate.Year())
|
||||
currentDay := startDate.Format("2")
|
||||
|
||||
month, ok := jsonBody[currentMonth]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("could not access month (%s):\n%s", currentMonth, string(content))
|
||||
}
|
||||
|
||||
day, ok := month[currentDay]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("could not access day (%s):\n%s", currentDay, string(content))
|
||||
}
|
||||
|
||||
return day, nil
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue