about summary refs log blame commit diff stats
path: root/themes/mono
blob: 8efd7369af87ff410ccd323dcce2552ccf4b5edd (plain) (tree)
an> min sec = rand.Int63n(delta) + min date = time.Unix(sec, 0).Format("2006-01-02") return date } // APODPath returns Astronomy Picture of the Day path func APODPath(apodInfo map[string]string, timeout time.Duration) (APOD, error) { var err error apodRes := APOD{} // validate date re := regexp.MustCompile("((19|20)\\d\\d)-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])") if !re.MatchString(apodInfo["date"]) { return apodRes, fmt.Errorf("%s does not match format 'YYYY-MM-DD'", apodInfo["date"]) } client := http.Client{ Timeout: time.Second * timeout, } req, err := http.NewRequest(http.MethodGet, apodInfo["api"], nil) if err != nil { return apodRes, err } q := req.URL.Query() q.Add("api_key", apodInfo["apiKey"]) q.Add("date", apodInfo["date"]) req.URL.RawQuery = q.Encode() res, err := client.Do(req) if err != nil { fmt.Printf("Error: GET %s\n", apodInfo["api"]) return apodRes, err } defer res.Body.Close() resBody, err := ioutil.ReadAll(res.Body) if err != nil { return apodRes, err } err = json.Unmarshal([]byte(resBody), &apodRes) if err != nil { return apodRes, err } if res.StatusCode != 200 { return apodRes, fmt.Errorf("Unexpected response status code received: %d %s", res.StatusCode, http.StatusText(res.StatusCode)) } return apodRes, err }