v1.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package v1
  2. import (
  3. "context"
  4. "encoding/json"
  5. "net/http"
  6. )
  7. type API interface {
  8. Me(ctx context.Context) (int64, []byte, error)
  9. Donates(ctx context.Context, page, size int64) (int64, []byte, error)
  10. Clients(ctx context.Context) (int64, []byte, error)
  11. }
  12. type Client struct {
  13. api API
  14. }
  15. func NewClient(api API) *Client {
  16. return &Client{
  17. api: api,
  18. }
  19. }
  20. func (c *Client) Me(ctx context.Context) (*ResponseMe, error) {
  21. var response ResponseMe
  22. status, result, err := c.api.Me(ctx)
  23. if err != nil {
  24. return &response, err
  25. }
  26. if err := json.Unmarshal(result, &response); err != nil {
  27. return &response, err
  28. }
  29. if status == http.StatusOK {
  30. response.Success = true
  31. }
  32. return &response, nil
  33. }
  34. func (c *Client) Donates(ctx context.Context, page, size int64) (*ResponseDonates, error) {
  35. var response ResponseDonates
  36. status, result, err := c.api.Donates(ctx, page, size)
  37. if err != nil {
  38. return &response, err
  39. }
  40. if err := json.Unmarshal(result, &response); err != nil {
  41. return &response, err
  42. }
  43. if status == http.StatusOK {
  44. response.Success = true
  45. }
  46. return &response, nil
  47. }
  48. func (c *Client) Clients(ctx context.Context) (*ResponseClients, error) {
  49. var response ResponseClients
  50. status, result, err := c.api.Clients(ctx)
  51. if err != nil {
  52. return &response, err
  53. }
  54. if err := json.Unmarshal(result, &response); err != nil {
  55. return &response, err
  56. }
  57. if status == http.StatusOK {
  58. response.Success = true
  59. }
  60. return &response, nil
  61. }