package helper import ( "encoding/json" "io/ioutil" "net/http" "strings" ) func JSONWebRequest(url string) interface{} { Log.Noticef("requesting url via GET %s", url) resp, err := http.Get(url) if err != nil { Log.Panicf("could not get url '%s': %s", url, err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { Log.Panicf("could not read body from url '%s': %s", url, err) } Log.Debugf("output from url '%s':\n%s", url, string(body)) if resp.StatusCode >= 400 { Log.Panicf("bad status '%d - %s' from url '%s'", resp.StatusCode, resp.Status, url) } contentType := resp.Header.Get("Content-Type") if strings.Contains(contentType, "json") { } else { Log.Panicf("is not json '%s' from url '%s'", contentType, url) } jsonMap := make(map[string]interface{}) err = json.Unmarshal(body, &jsonMap) if err == nil { return jsonMap } jsonArrayMap := make([]map[string]interface{}, 0) err = json.Unmarshal(body, &jsonArrayMap) if err == nil { return jsonArrayMap } Log.Panicf("could not read json from '%s': invalid type", url) return nil }