rest.go 715 B

1234567891011121314151617181920212223242526272829303132333435
  1. package rest
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io"
  6. "net/http"
  7. )
  8. // JSONDecoder decodes json from given io.ReadCloser to target object.
  9. func JSONDecoder(data io.ReadCloser, target interface{}) error {
  10. decoder := json.NewDecoder(data)
  11. err := decoder.Decode(target)
  12. if err != nil {
  13. return err
  14. }
  15. return nil
  16. }
  17. // GET returns io.ReadCloser of response body. Don't forget to close it.
  18. func GET(url string) (io.ReadCloser, error) {
  19. resp, err := http.Get(url)
  20. if err != nil {
  21. return nil, fmt.Errorf("Response error: %v", err)
  22. }
  23. if resp.StatusCode != 200 {
  24. resp.Body.Close()
  25. return nil, fmt.Errorf("Request unsuccessful: %v (%v) - %v", resp.Status, resp.StatusCode, url)
  26. }
  27. return resp.Body, nil
  28. }