hubcaps/
rate_limit.rs

1//! Rate Limit interface
2use crate::{Future, Github};
3use serde::Deserialize;
4
5pub struct RateLimit {
6    github: Github,
7}
8
9impl RateLimit {
10    #[doc(hidden)]
11    pub fn new(github: Github) -> Self {
12        Self { github }
13    }
14
15    /// https://developer.github.com/v3/rate_limit/#get-your-current-rate-limit-status
16    pub fn get(&self) -> Future<RateLimitStatus> {
17        self.github.get("/rate_limit")
18    }
19}
20
21// representations
22
23#[derive(Debug, Deserialize)]
24pub struct RateLimitStatus {
25    pub resources: RateLimitResourcesStatus,
26}
27
28#[derive(Debug, Deserialize)]
29pub struct RateLimitResourcesStatus {
30    pub core: RateLimitResourceStatus,
31    pub search: RateLimitResourceStatus,
32    pub graphql: RateLimitResourceStatus,
33}
34
35#[derive(Debug, Deserialize)]
36pub struct RateLimitResourceStatus {
37    pub limit: u32,
38    pub remaining: u32,
39    pub reset: u32, // ideally something like std::time::Duration
40}