sdApi1.go 889 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package sdApi1
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. models "devel.mephi.ru/dyokunev/go-asu-models"
  8. )
  9. var (
  10. apiKey string
  11. )
  12. func SetApiKey(newApiKey string) {
  13. apiKey = newApiKey
  14. }
  15. func GetUnits() (models.Units, error) {
  16. client := &http.Client{}
  17. req, _ := http.NewRequest("GET", "https://sd.mephi.ru/api/1/units.json", nil)
  18. q := req.URL.Query()
  19. q.Add("api_key", apiKey)
  20. req.URL.RawQuery = q.Encode()
  21. response, err := client.Do(req)
  22. if err != nil {
  23. return nil, err
  24. }
  25. defer response.Body.Close()
  26. var bytesArray []byte
  27. buf := bytes.NewBuffer(bytesArray)
  28. _, err = buf.ReadFrom(response.Body)
  29. if err != nil {
  30. return nil, err
  31. }
  32. var units models.Units
  33. if err := json.Unmarshal(buf.Bytes(), &units); err != nil {
  34. return nil, fmt.Errorf("Cannot parse: %v: \"%v\"", err.Error(), string(buf.Bytes()));
  35. }
  36. units.CalculateTree()
  37. return units, nil
  38. }