{-# OPTIONS_HADDOCK hide, prune #-} module Web.Pixiv.API.PixivEntry ( module Web.Pixiv.API.PixivEntry, ) where import Data.Function ((&)) import Data.Proxy (Proxy (Proxy)) import Data.Text (Text) import Servant.API (QueryParam, QueryParam', Required, Strict, type (:>)) import Servant.Client.Core (HasClient (..), addHeader, appendToQueryString) import Web.Pixiv.Auth (Token (..)) import Web.Pixiv.Types (Publicity) data PixivEntry instance HasClient m api => HasClient m (PixivEntry :> api) where type Client m (PixivEntry :> api) = (Token, Maybe Text) -> Client m api clientWithRoute :: Proxy m -> Proxy (PixivEntry :> api) -> Request -> Client m (PixivEntry :> api) clientWithRoute Proxy m pm Proxy (PixivEntry :> api) Proxy Request req = \(Token -> Text unToken -> Text token, Maybe Text mLanguage) -> Proxy m -> Proxy api -> Request -> Client m api forall (m :: Type -> Type) api. HasClient m api => Proxy m -> Proxy api -> Request -> Client m api clientWithRoute Proxy m pm (Proxy api forall k (t :: k). Proxy t Proxy @api) (Request -> Client m api) -> Request -> Client m api forall a b. (a -> b) -> a -> b $ Request req Request -> (Request -> Request) -> Request forall a b. a -> (a -> b) -> b & HeaderName -> Text -> Request -> Request forall a. ToHttpApiData a => HeaderName -> a -> Request -> Request addHeader @Text HeaderName "User-Agent" Text "PixivAndroidApp/5.0.175 (Android 6.0; PixivHaskell)" Request -> (Request -> Request) -> Request forall a b. a -> (a -> b) -> b & HeaderName -> Text -> Request -> Request forall a. ToHttpApiData a => HeaderName -> a -> Request -> Request addHeader @Text HeaderName "Authorization" (Text "Bearer " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text token) Request -> (Request -> Request) -> Request forall a b. a -> (a -> b) -> b & Text -> Maybe Text -> Request -> Request appendToQueryString Text "filter" (Text -> Maybe Text forall a. a -> Maybe a Just Text "for_android") Request -> (Request -> Request) -> Request forall a b. a -> (a -> b) -> b & (Request -> Request) -> (Text -> Request -> Request) -> Maybe Text -> Request -> Request forall b a. b -> (a -> b) -> Maybe a -> b maybe Request -> Request forall a. a -> a id (HeaderName -> Text -> Request -> Request forall a. ToHttpApiData a => HeaderName -> a -> Request -> Request addHeader @Text HeaderName "Accept-Language") Maybe Text mLanguage hoistClientMonad :: Proxy m -> Proxy (PixivEntry :> api) -> (forall x. mon x -> mon' x) -> Client mon (PixivEntry :> api) -> Client mon' (PixivEntry :> api) hoistClientMonad Proxy m pm Proxy (PixivEntry :> api) Proxy forall x. mon x -> mon' x f Client mon (PixivEntry :> api) m (Token, Maybe Text) p = Proxy m -> Proxy api -> (forall x. mon x -> mon' x) -> Client mon api -> Client mon' api forall (m :: Type -> Type) api (mon :: Type -> Type) (mon' :: Type -> Type). HasClient m api => Proxy m -> Proxy api -> (forall x. mon x -> mon' x) -> Client mon api -> Client mon' api hoistClientMonad Proxy m pm (Proxy api forall k (t :: k). Proxy t Proxy @api) forall x. mon x -> mon' x f (Client mon (PixivEntry :> api) (Token, Maybe Text) -> Client mon api m (Token, Maybe Text) p) type OffsetParam = QueryParam "offset" Int pageToOffset :: Int -> Int -> Maybe Int pageToOffset :: Int -> Int -> Maybe Int pageToOffset Int perPage Int x | Int x Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 1 = Int -> Maybe Int forall a. a -> Maybe a Just (Int -> Maybe Int) -> Int -> Maybe Int forall a b. (a -> b) -> a -> b $ (Int x Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1) Int -> Int -> Int forall a. Num a => a -> a -> a * Int perPage | Bool otherwise = Maybe Int forall a. Maybe a Nothing type RestrictParam = QueryParam' '[Strict, Required] "restrict" Publicity