This section is empty.


This section is empty.


This section is empty.


type ApiLimiter

type ApiLimiter struct {
	// contains filtered or unexported fields

    ApiLimiter allows to rate limit API calls

    func NewApiLimiter

    func NewApiLimiter(metrics MetricsAPI, rateLimit float64, burst int) *ApiLimiter

      NewApiLimiter returns a new API limiter with the specific rate limit and burst configuration. The MetricsAPI interface is called to allow for metrics accounting.

      func (*ApiLimiter) Limit

      func (l *ApiLimiter) Limit(ctx context.Context, operation string)

        Limit applies the rate limiting configuration for the given operation

        type DelaySimulator

        type DelaySimulator struct {
        	// contains filtered or unexported fields

          DelaySimulator simulates delays in API calls

          func NewDelaySimulator

          func NewDelaySimulator() *DelaySimulator

            NewDelaySimulator returns a new DelaySimulator

            func (*DelaySimulator) Delay

            func (d *DelaySimulator) Delay(op Operation)

              Delay delays an API operation according to the configuration

              func (*DelaySimulator) SetDelay

              func (d *DelaySimulator) SetDelay(op Operation, delay time.Duration)

                SetDelay specifies the delay to be simulated for an individual API operation

                type MetricsAPI

                type MetricsAPI interface {
                	ObserveRateLimit(operation string, duration time.Duration)

                  MetricsAPI represents the metrics maintained by the API limiter

                  type Operation

                  type Operation interface{}

                    Operation represents an API operation