Browse Source

Initial state

Piotr Czajkowski 4 years ago
parent
commit
dd1f0d10fe
1 changed files with 35 additions and 0 deletions
  1. 35 0
      rest.go

+ 35 - 0
rest.go

@@ -0,0 +1,35 @@
+package rest
+
+import (
+	"encoding/json"
+	"fmt"
+	"io"
+	"net/http"
+)
+
+// JSONDecoder decodes json from given io.ReadCloser to target object.
+func JSONDecoder(data io.ReadCloser, target interface{}) error {
+	decoder := json.NewDecoder(data)
+
+	err := decoder.Decode(target)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// GET returns io.ReadCloser of response body. Don't forget to close it.
+func GET(url string) (io.ReadCloser, error) {
+	resp, err := http.Get(url)
+	if err != nil {
+		return nil, fmt.Errorf("Response error: %v", err)
+	}
+
+	if resp.StatusCode != 200 {
+		resp.Body.Close()
+		return nil, fmt.Errorf("Request unsuccessful: %v (%v) - %v", resp.Status, resp.StatusCode, url)
+	}
+
+	return resp.Body, nil
+}