DiscordRateLimiter

public final class DiscordRateLimiter : DiscordRateLimiterSpec

The DiscordRateLimiter is in charge of making sure we don’t flood Discord with requests. It keeps a dictionary of DiscordRateLimitKeys and DiscordRateLimits. All requests to the REST api should be routed through the DiscordRateLimiter. If a DiscordRateLimit determines we have hit a limit, we add the request and its callback to the limit’s queue. After that it is up to the DiscordRateLimit to decide when to make the request. TODO handle the global rate limit

  • The queue that request responses are called on.

    Declaration

    Swift

    public let callbackQueue: DispatchQueue
  • Whether or not this rate limiter should immediately callback on rate limits.

    Declaration

    Swift

    public let failFast: Bool
  • Creates a new DiscordRateLimiter with the specified callback queue.

    Declaration

    Swift

    public init(callbackQueue: DispatchQueue, failFast: Bool)
  • Executes a request through the rate limiter. If the rate limit is hit, the request is put in a queue and executed later.

    Declaration

    Swift

    public func executeRequest(_ request: URLRequest, for endpointKey: DiscordRateLimitKey,
                               callback: @escaping (Data?, HTTPURLResponse?, Error?) -> ())

    Parameters

    request

    The request to execute.

    for

    The endpoint key.

    callback

    The callback for this request.

  • Executes a request through the rate limiter. If the rate limit is hit, the request is put in a queue and executed later.

    Declaration

    Swift

    public func executeRequest(endpoint: DiscordEndpoint,
                               token: DiscordToken,
                               requestInfo: DiscordEndpoint.EndpointRequest,
                               callback: @escaping (Data?, HTTPURLResponse?, Error?) -> ())

    Parameters

    endpoint

    The endpoint for this request.

    token

    The token to use in this request.

    requestInfo

    A DiscordEndpoint.EndpointRequest specifying the request info.

    callback

    The callback for this request.