|
@@ -2,10 +2,10 @@ package sdApi1
|
|
|
|
|
|
import (
|
|
|
"bytes"
|
|
|
+ models "devel.mephi.ru/dyokunev/go-asu-models"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"net/http"
|
|
|
- models "devel.mephi.ru/dyokunev/go-asu-models"
|
|
|
)
|
|
|
|
|
|
var (
|
|
@@ -17,9 +17,25 @@ func SetApiKey(newApiKey string) {
|
|
|
}
|
|
|
|
|
|
func GetUnits() (models.Units, error) {
|
|
|
+ var units models.Units
|
|
|
+ buf, err := getJSON("https://sd.mephi.ru/api/1/units.json")
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := json.Unmarshal(buf.Bytes(), &units); err != nil {
|
|
|
+ return nil, fmt.Errorf("Cannot parse: %v: \"%v\"", string(buf.Bytes()), err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ units.CalculateTree()
|
|
|
+
|
|
|
+ return units, nil
|
|
|
+}
|
|
|
+
|
|
|
+func getJSON(url string) (*bytes.Buffer, error) {
|
|
|
client := &http.Client{}
|
|
|
|
|
|
- req, _ := http.NewRequest("GET", "https://sd.mephi.ru/api/1/units.json", nil)
|
|
|
+ req, _ := http.NewRequest("GET", url, nil)
|
|
|
q := req.URL.Query()
|
|
|
q.Add("api_key", apiKey)
|
|
|
req.URL.RawQuery = q.Encode()
|
|
@@ -37,13 +53,5 @@ func GetUnits() (models.Units, error) {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- var units models.Units
|
|
|
- if err := json.Unmarshal(buf.Bytes(), &units); err != nil {
|
|
|
- return nil, fmt.Errorf("Cannot parse: %v: \"%v\"", err.Error(), string(buf.Bytes()));
|
|
|
- }
|
|
|
-
|
|
|
- units.CalculateTree()
|
|
|
-
|
|
|
- return units, nil
|
|
|
+ return buf, nil
|
|
|
}
|
|
|
-
|