module Web.Pixiv.API
(
getTrendingTags,
getRecommendedIllusts,
getRecommendedMangas,
getIllustDetail,
getIllustComments,
getIllustRelated,
getIllustRanking,
getIllustFollow,
getIllustNew,
getUgoiraMetadata,
searchIllust,
searchUser,
getUserDetail,
getUserIllusts,
getUserFollowing,
getUserFollower,
getUserMypixiv,
getUserBookmarks,
getSpotlightArticles,
)
where
import Control.Lens
import Data.Coerce (coerce)
import Data.Proxy
import Data.Text (Text)
import qualified Data.Text as T
import Data.Text.Read (decimal)
import Servant.Client.Core
import Web.Pixiv.API.Article
import Web.Pixiv.API.Illust
import Web.Pixiv.API.PixivEntry (pageToOffset)
import Web.Pixiv.API.Search
import Web.Pixiv.API.Trending
import Web.Pixiv.API.User
import Web.Pixiv.Types
import Web.Pixiv.Types.PixivT
getTrendingTags ::
MonadPixiv m =>
Maybe Bool ->
m [TrendingTag]
getTrendingTags :: Maybe Bool -> m [TrendingTag]
getTrendingTags Maybe Bool
includeTranslatedTagResults = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
TrendingTags
tags <- Proxy GetTrendingTags
-> Proxy m -> (Token, Maybe Text) -> Maybe Bool -> m TrendingTags
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetTrendingTags
forall k (t :: k). Proxy t
Proxy @GetTrendingTags) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe Bool
includeTranslatedTagResults
[TrendingTag] -> m [TrendingTag]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([TrendingTag] -> m [TrendingTag])
-> [TrendingTag] -> m [TrendingTag]
forall a b. (a -> b) -> a -> b
$ TrendingTags -> [TrendingTag]
coerce TrendingTags
tags
getRecommendedIllusts ::
MonadPixiv m =>
Maybe Bool ->
Maybe Bool ->
m [Illust]
getRecommendedIllusts :: Maybe Bool -> Maybe Bool -> m [Illust]
getRecommendedIllusts Maybe Bool
includePrivacyPolicy Maybe Bool
includeTranslatedTagResults = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetRecommendedIllusts
-> Proxy m
-> (Token, Maybe Text)
-> Maybe Bool
-> Maybe Bool
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetRecommendedIllusts
forall k (t :: k). Proxy t
Proxy @GetRecommendedIllusts) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe Bool
includePrivacyPolicy Maybe Bool
includeTranslatedTagResults
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getRecommendedMangas :: MonadPixiv m => Maybe Bool -> Maybe Bool -> m [Illust]
getRecommendedMangas :: Maybe Bool -> Maybe Bool -> m [Illust]
getRecommendedMangas Maybe Bool
includePrivacyPolicy Maybe Bool
includeTranslatedTagResults = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetRecommendedMangas
-> Proxy m
-> (Token, Maybe Text)
-> Maybe Bool
-> Maybe Bool
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetRecommendedMangas
forall k (t :: k). Proxy t
Proxy @GetRecommendedMangas) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe Bool
includePrivacyPolicy Maybe Bool
includeTranslatedTagResults
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getIllustDetail ::
MonadPixiv m =>
Int ->
m Illust
getIllustDetail :: Int -> m Illust
getIllustDetail Int
illustId = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
IllustWrapper
detail <- Proxy GetIllustDetail
-> Proxy m -> (Token, Maybe Text) -> Int -> m IllustWrapper
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustDetail
forall k (t :: k). Proxy t
Proxy @GetIllustDetail) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
illustId
Illust -> m Illust
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure (Illust -> m Illust) -> Illust -> m Illust
forall a b. (a -> b) -> a -> b
$ IllustWrapper -> Illust
coerce IllustWrapper
detail
getIllustComments ::
MonadPixiv m =>
Int ->
Int ->
m Comments
Int
illustId (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Proxy GetIllustComments
-> Proxy m -> (Token, Maybe Text) -> Int -> Maybe Int -> m Comments
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustComments
forall k (t :: k). Proxy t
Proxy @GetIllustComments) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
illustId Maybe Int
offset
getIllustRelated ::
MonadPixiv m =>
Int ->
Int ->
m [Illust]
getIllustRelated :: Int -> Int -> m [Illust]
getIllustRelated Int
illustId (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetIllustRelated
-> Proxy m -> (Token, Maybe Text) -> Int -> Maybe Int -> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustRelated
forall k (t :: k). Proxy t
Proxy @GetIllustRelated) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
illustId Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getIllustRanking ::
MonadPixiv m =>
Maybe RankMode ->
Int ->
m [Illust]
getIllustRanking :: Maybe RankMode -> Int -> m [Illust]
getIllustRanking Maybe RankMode
mode (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetIllustRanking
-> Proxy m
-> (Token, Maybe Text)
-> Maybe RankMode
-> Maybe Int
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustRanking
forall k (t :: k). Proxy t
Proxy @GetIllustRanking) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe RankMode
mode Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getIllustFollow ::
MonadPixiv m =>
Publicity ->
Int ->
m [Illust]
getIllustFollow :: Publicity -> Int -> m [Illust]
getIllustFollow Publicity
restrict (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetIllustFollow
-> Proxy m
-> (Token, Maybe Text)
-> Publicity
-> Maybe Int
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustFollow
forall k (t :: k). Proxy t
Proxy @GetIllustFollow) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Publicity
restrict Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getIllustNew ::
MonadPixiv m =>
Int ->
m [Illust]
getIllustNew :: Int -> m [Illust]
getIllustNew (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetIllustNew
-> Proxy m -> (Token, Maybe Text) -> Maybe Int -> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetIllustNew
forall k (t :: k). Proxy t
Proxy @GetIllustNew) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getUgoiraMetadata ::
MonadPixiv m =>
Int ->
m UgoiraMetadata
getUgoiraMetadata :: Int -> m UgoiraMetadata
getUgoiraMetadata Int
illustId = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
UgoiraMetadataWrapper
ug <- Proxy GetUgoiraMetadata
-> Proxy m -> (Token, Maybe Text) -> Int -> m UgoiraMetadataWrapper
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUgoiraMetadata
forall k (t :: k). Proxy t
Proxy @GetUgoiraMetadata) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
illustId
UgoiraMetadata -> m UgoiraMetadata
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure (UgoiraMetadata -> m UgoiraMetadata)
-> UgoiraMetadata -> m UgoiraMetadata
forall a b. (a -> b) -> a -> b
$ UgoiraMetadataWrapper -> UgoiraMetadata
coerce UgoiraMetadataWrapper
ug
searchIllust ::
MonadPixiv m =>
SearchTarget ->
Text ->
Maybe Bool ->
Maybe SortingMethod ->
Maybe Duration ->
Int ->
m [Illust]
searchIllust :: SearchTarget
-> Text
-> Maybe Bool
-> Maybe SortingMethod
-> Maybe Duration
-> Int
-> m [Illust]
searchIllust SearchTarget
searchTarget Text
searchWord Maybe Bool
includeTranslatedTag Maybe SortingMethod
sortingMethod Maybe Duration
duration (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy SearchIllust
-> Proxy m
-> (Token, Maybe Text)
-> SearchTarget
-> Text
-> Maybe Bool
-> Maybe SortingMethod
-> Maybe Duration
-> Maybe Int
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy SearchIllust
forall k (t :: k). Proxy t
Proxy @SearchIllust) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p SearchTarget
searchTarget Text
searchWord Maybe Bool
includeTranslatedTag Maybe SortingMethod
sortingMethod Maybe Duration
duration Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
searchUser ::
MonadPixiv m =>
Text ->
Int ->
m [UserPreview]
searchUser :: Text -> Int -> m [UserPreview]
searchUser Text
searchWord (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
UserPreviews
ups <- Proxy SearchUser
-> Proxy m
-> (Token, Maybe Text)
-> Text
-> Maybe Int
-> m UserPreviews
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy SearchUser
forall k (t :: k). Proxy t
Proxy @SearchUser) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Text
searchWord Maybe Int
offset
[UserPreview] -> m [UserPreview]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([UserPreview] -> m [UserPreview])
-> [UserPreview] -> m [UserPreview]
forall a b. (a -> b) -> a -> b
$ UserPreviews -> NextUrlLess UserPreviews
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl UserPreviews
ups
getUserDetail ::
MonadPixiv m =>
Int ->
m UserDetail
getUserDetail :: Int -> m UserDetail
getUserDetail Int
userId = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Proxy GetUserDetail
-> Proxy m -> (Token, Maybe Text) -> Int -> m UserDetail
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserDetail
forall k (t :: k). Proxy t
Proxy @GetUserDetail) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId
getUserIllusts ::
MonadPixiv m =>
Int ->
Maybe IllustType ->
Int ->
m [Illust]
getUserIllusts :: Int -> Maybe IllustType -> Int -> m [Illust]
getUserIllusts Int
userId Maybe IllustType
illustType (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetUserIllusts
-> Proxy m
-> (Token, Maybe Text)
-> Int
-> Maybe IllustType
-> Maybe Int
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserIllusts
forall k (t :: k). Proxy t
Proxy @GetUserIllusts) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId Maybe IllustType
illustType Maybe Int
offset
[Illust] -> m [Illust]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([Illust] -> m [Illust]) -> [Illust] -> m [Illust]
forall a b. (a -> b) -> a -> b
$ Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts
getUserFollowing ::
MonadPixiv m =>
Int ->
Publicity ->
Int ->
m [UserPreview]
getUserFollowing :: Int -> Publicity -> Int -> m [UserPreview]
getUserFollowing Int
userId Publicity
restrict (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
UserPreviews
ups <- Proxy GetUserFollowing
-> Proxy m
-> (Token, Maybe Text)
-> Int
-> Publicity
-> Maybe Int
-> m UserPreviews
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserFollowing
forall k (t :: k). Proxy t
Proxy @GetUserFollowing) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId Publicity
restrict Maybe Int
offset
[UserPreview] -> m [UserPreview]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([UserPreview] -> m [UserPreview])
-> [UserPreview] -> m [UserPreview]
forall a b. (a -> b) -> a -> b
$ UserPreviews -> NextUrlLess UserPreviews
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl UserPreviews
ups
getUserFollower ::
MonadPixiv m =>
Int ->
Int ->
m [UserPreview]
getUserFollower :: Int -> Int -> m [UserPreview]
getUserFollower Int
userId (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
UserPreviews
ups <- Proxy GetUserFollower
-> Proxy m
-> (Token, Maybe Text)
-> Int
-> Maybe Int
-> m UserPreviews
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserFollower
forall k (t :: k). Proxy t
Proxy @GetUserFollower) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId Maybe Int
offset
[UserPreview] -> m [UserPreview]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([UserPreview] -> m [UserPreview])
-> [UserPreview] -> m [UserPreview]
forall a b. (a -> b) -> a -> b
$ UserPreviews -> NextUrlLess UserPreviews
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl UserPreviews
ups
getUserMypixiv ::
MonadPixiv m =>
Int ->
Int ->
m [UserPreview]
getUserMypixiv :: Int -> Int -> m [UserPreview]
getUserMypixiv Int
userId (Int -> Int -> Maybe Int
pageToOffset Int
30 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
UserPreviews
ups <- Proxy GetUserMypixiv
-> Proxy m
-> (Token, Maybe Text)
-> Int
-> Maybe Int
-> m UserPreviews
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserMypixiv
forall k (t :: k). Proxy t
Proxy @GetUserMypixiv) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId Maybe Int
offset
[UserPreview] -> m [UserPreview]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([UserPreview] -> m [UserPreview])
-> [UserPreview] -> m [UserPreview]
forall a b. (a -> b) -> a -> b
$ UserPreviews -> NextUrlLess UserPreviews
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl UserPreviews
ups
getUserBookmarks ::
MonadPixiv m =>
Int ->
Publicity ->
Maybe Int ->
m ([Illust], Maybe Int)
getUserBookmarks :: Int -> Publicity -> Maybe Int -> m ([Illust], Maybe Int)
getUserBookmarks Int
userId Publicity
restrict Maybe Int
maxBookmarkId = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
Illusts
illusts <- Proxy GetUserBookmarks
-> Proxy m
-> (Token, Maybe Text)
-> Int
-> Publicity
-> Maybe Int
-> m Illusts
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetUserBookmarks
forall k (t :: k). Proxy t
Proxy @GetUserBookmarks) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Int
userId Publicity
restrict Maybe Int
maxBookmarkId
([Illust], Maybe Int) -> m ([Illust], Maybe Int)
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure (Illusts -> NextUrlLess Illusts
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl Illusts
illusts, Illusts -> Maybe Text
forall a. HasNextUrl a => a -> Maybe Text
getNextUrl Illusts
illusts Maybe Text -> (Text -> Maybe Int) -> Maybe Int
forall (m :: Type -> Type) a b. Monad m => m a -> (a -> m b) -> m b
>>= ((Either String (Int, Text)
-> Getting (First Int) (Either String (Int, Text)) Int -> Maybe Int
forall s a. s -> Getting (First a) s a -> Maybe a
^? ((Int, Text) -> Const (First Int) (Int, Text))
-> Either String (Int, Text)
-> Const (First Int) (Either String (Int, Text))
forall c a b. Prism (Either c a) (Either c b) a b
_Right (((Int, Text) -> Const (First Int) (Int, Text))
-> Either String (Int, Text)
-> Const (First Int) (Either String (Int, Text)))
-> ((Int -> Const (First Int) Int)
-> (Int, Text) -> Const (First Int) (Int, Text))
-> Getting (First Int) (Either String (Int, Text)) Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> Const (First Int) Int)
-> (Int, Text) -> Const (First Int) (Int, Text)
forall s t a b. Field1 s t a b => Lens s t a b
_1) (Either String (Int, Text) -> Maybe Int)
-> (Text -> Either String (Int, Text)) -> Text -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Either String (Int, Text)
forall a. Integral a => Reader a
decimal (Text -> Either String (Int, Text))
-> (Text -> Text) -> Text -> Either String (Int, Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> Text -> Text
T.takeWhileEnd (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'=')))
getSpotlightArticles ::
MonadPixiv m =>
Maybe Text ->
Int ->
m [SpotlightArticle]
getSpotlightArticles :: Maybe Text -> Int -> m [SpotlightArticle]
getSpotlightArticles Maybe Text
category (Int -> Int -> Maybe Int
pageToOffset Int
10 -> Maybe Int
offset) = do
(Token, Maybe Text)
p <- m (Token, Maybe Text)
forall (m :: Type -> Type). MonadPixiv m => m (Token, Maybe Text)
getAccessTokenWithAccpetLanguage
SpotlightArticles
articles <- Proxy GetSpotlightArticles
-> Proxy m
-> (Token, Maybe Text)
-> Maybe Text
-> Maybe Int
-> m SpotlightArticles
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
clientIn (Proxy GetSpotlightArticles
forall k (t :: k). Proxy t
Proxy @GetSpotlightArticles) Proxy m
forall k (t :: k). Proxy t
Proxy (Token, Maybe Text)
p Maybe Text
category Maybe Int
offset
[SpotlightArticle] -> m [SpotlightArticle]
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure ([SpotlightArticle] -> m [SpotlightArticle])
-> [SpotlightArticle] -> m [SpotlightArticle]
forall a b. (a -> b) -> a -> b
$ SpotlightArticles -> NextUrlLess SpotlightArticles
forall a. HasNextUrl a => a -> NextUrlLess a
unNextUrl SpotlightArticles
articles