1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package v1
- import (
- "context"
- "fmt"
- "time"
- )
- var DonatesPerPage = 20
- var ThrottlingInMilliseconds = 1000
- func (c *Client) EachDonate(ctx context.Context, fn func(donate *ResponseDonatesContent) error) error {
- var resp *ResponseDonates
- var err error
- p := int64(0)
- for {
- resp, err = c.Donates(ctx, p, int64(DonatesPerPage))
- if err != nil {
- return err
- }
- if !resp.Success {
- return fmt.Errorf("%s", resp.Message)
- }
- if len(resp.Content) > 0 {
- for _, donate := range resp.Content {
- err = fn(&donate)
- if err != nil {
- return err
- }
- select {
- case <-ctx.Done():
- return fmt.Errorf("context canceled")
- default:
- }
- }
- }
- p++
- if err != nil {
- break
- }
- if p >= resp.Pages {
- break
- }
- if resp.Page >= resp.Pages {
- break
- }
- select {
- case <-ctx.Done():
- return fmt.Errorf("context canceled")
- default:
- }
-
- time.Sleep(time.Duration(ThrottlingInMilliseconds) * time.Millisecond)
- }
- return err
- }
|