[][src]Struct riven::RiotApiConfig

pub struct RiotApiConfig { /* fields omitted */ }

Configuration for instantiating RiotApi.

Implementations

impl RiotApiConfig[src]

pub const PRECONFIG_BURST_BURST_PCT: f32[src]

0.99

burst_pct used by preconfig_burst (and default with_key).

pub const PRECONFIG_BURST_DURATION_OVERHEAD_MILLIS: u64[src]

989 ms

duration_overhead used by preconfig_burst (and default with_key).

pub const PRECONFIG_THROUGHPUT_BURST_PCT: f32[src]

0.47

burst_pct used by preconfig_throughput.

pub const PRECONFIG_THROUGHPUT_DURATION_OVERHEAD_MILLIS: u64[src]

10 ms.

duration_overhead used by preconfig_throughput.

pub fn with_key<T: Into<String>>(api_key: T) -> Self[src]

Creates a new RiotApiConfig with the given api_key with the following configuration:

  • retries = 3.
  • purst_pct = 0.99 (preconfig_burst).
  • duration_overhead = 989 ms (preconfig_burst).

api_key should be a Riot Games API key from https://developer.riotgames.com/, and should look like "RGAPI-01234567-89ab-cdef-0123-456789abcdef".

pub fn preconfig_burst(self) -> Self[src]

Sets rate limiting settings to preconfigured values optimized for burst, low latency:

  • burst_pct = 0.99 (PRECONFIG_BURST_BURST_PCT).
  • duration_overhead = 989 ms (PRECONFIG_BURST_DURATION_OVERHEAD_MILLIS).

Returns

self, for chaining.

pub fn preconfig_throughput(self) -> Self[src]

Sets the rate limiting settings to preconfigured values optimized for high throughput:

  • burst_pct = 0.47 (PRECONFIG_THROUGHPUT_BURST_PCT).
  • duration_overhead = 10 ms (PRECONFIG_THROUGHPUT_DURATION_OVERHEAD_MILLIS).

Returns

self, for chaining.

pub fn set_retries(self, retries: u8) -> Self[src]

Set number of times to retry requests. Naturally, only retryable requests will be retried: responses with status codes 5xx or 429 (after waiting for retry-after headers). A value of 0 means one request will be sent and it will not be retried if it fails.

Returns

self, for chaining.

pub fn set_burst_pct(self, burst_pct: f32) -> Self[src]

Burst percentage controls how many burst requests are allowed and therefore how requests are spread out. Higher equals more burst, less spread. Lower equals less burst, more spread.

The value must be in the range (0, 1]; Between 0, exclusive, and 1, inclusive. However values should generally be larger than 0.25.

Burst percentage behaves as follows:
A burst percentage of x% means, for each token bucket, "x% of the tokens can be used in x% of the bucket duration." So, for example, if x is 90%, a bucket would allow 90% of the requests to be made without any delay. Then, after waiting 90% of the bucket's duration, the remaining 10% of requests could be made.

A burst percentage of 100% results in no request spreading, which would allow for the largest bursts and lowest latency, but could result in 429s as bucket boundaries occur.

A burst percentage of near 0% results in high spreading causing temporally equidistant requests. This prevents 429s but has the highest latency. Additionally, if the number of tokens is high, this may lower the overall throughput due to the rate at which requests can be scheduled.

Therefore, for interactive applications like summoner & match history lookup, a higher percentage may be better. For data-collection apps like champion winrate aggregation, a medium-low percentage may be better.

Panics

If burst_pct is not in range (0, 1].

Returns

self, for chaining.

pub fn set_duration_overhead(self, duration_overhead: Duration) -> Self[src]

Sets the additional bucket duration to consider when rate limiting. Increasing this value will decrease the chances of 429s, but will lower the overall throughput.

In a sense, the duration_overhead is how much to "widen" the temporal width of buckets.

Given a particular Riot Game API rate limit bucket that allows N requests per D duration, when counting requests this library will consider requests sent in the past D + duration_overhead duration.

Returns

self, for chaining.

pub fn set_client_builder(self, client_builder: ClientBuilder) -> Self[src]

Sets the reqwest ClientBuilder.

Returns

self, for chaining.

Trait Implementations

impl Debug for RiotApiConfig[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.