//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. //Copyright (C) 2024 HTWKalender support@htwkalender.de //This program is free software: you can redistribute it and/or modify //it under the terms of the GNU Affero General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Affero General Public License for more details. //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . package fetch import ( "fmt" "io" "net/http" "time" ) // getPlanHTML Get the HTML document from the specified URL func GetHTML(url string) (string, error) { // Create HTTP client with timeout of 5 seconds client := http.Client{ Timeout: 30 * time.Second, } // Send GET request response, err := client.Get(url) if err != nil { fmt.Printf("Error occurred while making the request: %s\n", err.Error()) return "", err } defer func(Body io.ReadCloser) { err := Body.Close() if err != nil { return } }(response.Body) // Read the response body body, err := io.ReadAll(response.Body) if err != nil { fmt.Printf("Error occurred while reading the response: %s\n", err.Error()) return "", err } return toUtf8(body), err } func toUtf8(iso88591Buf []byte) string { buf := make([]rune, len(iso88591Buf)) for i, b := range iso88591Buf { buf[i] = rune(b) } return string(buf) }