12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package v1
- import (
- "context"
- "io"
- "net/http"
- "net/url"
- "strconv"
- "time"
- )
- type ClientAPI struct {
- timeout time.Duration
- token string
- }
- func NewClientAPI(timeout time.Duration, token string) *ClientAPI {
- return &ClientAPI{
- timeout: timeout,
- token: token,
- }
- }
- func (c *ClientAPI) request(ctx context.Context, url string) (int64, []byte, error) {
- var result []byte
- ctx, cancel := context.WithTimeout(ctx, c.timeout)
- defer cancel()
- req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
- if err != nil {
- return 0, result, err
- }
- req.Header = map[string][]string{
- "X-Token": {c.token},
- }
- rcl := &http.Client{}
- var resp *http.Response
- resp, err = rcl.Do(req)
- if err != nil {
- return int64(resp.StatusCode), result, err
- }
- defer resp.Body.Close()
- result, err = io.ReadAll(resp.Body)
- if err != nil {
- return int64(resp.StatusCode), result, err
- }
- return int64(resp.StatusCode), result, nil
- }
- func (c *ClientAPI) Me(ctx context.Context) (int64, []byte, error) {
- return c.request(ctx, API_URL_ME)
- }
- func (c *ClientAPI) Donates(ctx context.Context, page, size int64) (int64, []byte, error) {
- params := url.Values{}
- params.Add("page", strconv.FormatInt(page, 10))
- params.Add("size", strconv.FormatInt(size, 10))
- return c.request(ctx, API_URL_DONATES+"?"+params.Encode())
- }
- func (c *ClientAPI) Clients(ctx context.Context) (int64, []byte, error) {
- return c.request(ctx, API_URL_CLIENTS)
- }
|