package v3 import ( "encoding/json" "log/slog" "net/http" ) func parseEvents(url string, client *http.Client) (Events, error) { // the url is paginated, so we need to fetch all pages // example url: https://luna.htwk-leipzig.de/api/veranstaltungen?page=1&itemsPerPage=100 // the itemsPerPage is set to 100, so we need to fetch all pages until we get an empty response var fetchedEvents Events var itemsPerPage = 100 responses, err := paginatedFetch(url, itemsPerPage, client) if err != nil { slog.Error("Error while fetching events", err) return Events{}, err } for _, response := range responses { var events Events err = json.Unmarshal([]byte(response), &events) if err != nil { slog.Error("Error while unmarshalling events", err) return Events{}, err } fetchedEvents.Events = append(fetchedEvents.Events, events.Events...) fetchedEvents.TotalItems = events.TotalItems } return fetchedEvents, nil }