sdApi11.go 937 B

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