module GitHub.Data.RateLimit where
import GitHub.Internal.Prelude
import Prelude ()
data Limits = Limits
{ limitsMax :: !Int
, limitsRemaining :: !Int
, limitsReset :: !Int
}
deriving (Show, Data, Typeable, Eq, Ord, Generic)
instance NFData Limits where rnf = genericRnf
instance Binary Limits
instance FromJSON Limits where
parseJSON = withObject "Limits" $ \obj -> Limits
<$> obj .: "limit"
<*> obj .: "remaining"
<*> obj .: "reset"
data RateLimit = RateLimit
{ rateLimitCore :: Limits
, rateLimitSearch :: Limits
, rateLimitGraphQL :: Limits
}
deriving (Show, Data, Typeable, Eq, Ord, Generic)
instance NFData RateLimit where rnf = genericRnf
instance Binary RateLimit
instance FromJSON RateLimit where
parseJSON = withObject "RateLimit" $ \obj -> do
resources <- obj .: "resources"
RateLimit
<$> resources .: "core"
<*> resources .: "search"
<*> resources .: "graphql"