package main import ( "encoding/json" "fmt" "io" "log" "net/http" "os" "strings" ) type Config struct { URL string `json:"url"` Username string `json:"username"` Password string `json:"password"` } var serverConfig Config func read_config() { file, err := os.ReadFile("config.json") if err != nil { fmt.Print(err.Error()) return } err = json.Unmarshal(file, &serverConfig) if err != nil { fmt.Print(err.Error()) } } func convert_username_into_url(username string) string { result := strings.ReplaceAll(username, "@", "%40") return result } func main() { read_config() client := &http.Client{} xml := ` ` body := strings.NewReader(xml) req, _ := http.NewRequest( "PROPFIND", serverConfig.URL+"/dav/cal/"+convert_username_into_url(serverConfig.Username), body, ) req.SetBasicAuth(serverConfig.Username, serverConfig.Password) req.Header.Set("Depth", "1") req.Header.Set("Content-Type", "application/xml") resp, err := client.Do(req) if err != nil { fmt.Print(err.Error()) } defer resp.Body.Close() body2, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(string(body2)) }