twitter-conduit-0.6.1: Web/Twitter/Conduit/Lens.hs
{-# LANGUAGE RankNTypes #-}
module Web.Twitter.Conduit.Lens (
-- * 'TT.Response'
TT.Response,
responseStatus,
responseBody,
responseHeaders,
-- * 'TT.TwitterErrorMessage'
TT.TwitterErrorMessage,
twitterErrorMessage,
twitterErrorCode,
-- * 'TT.WithCursor'
TT.WithCursor,
previousCursor,
nextCursor,
contents,
-- * Re-exports
TT.TwitterError (..),
) where
import Control.Lens
import Data.Text (Text)
import Network.HTTP.Types (ResponseHeaders, Status)
import qualified Web.Twitter.Conduit.Cursor as TT
import qualified Web.Twitter.Conduit.Response as TT
-- * Lenses for 'TT.Response'
responseStatus :: forall responseType. Lens' (TT.Response responseType) Status
responseStatus afb s = (\b -> s {TT.responseStatus = b}) <$> afb (TT.responseStatus s)
responseHeaders :: forall responseType. Lens' (TT.Response responseType) ResponseHeaders
responseHeaders afb s = (\b -> s {TT.responseHeaders = b}) <$> afb (TT.responseHeaders s)
responseBody :: forall a b. Lens (TT.Response a) (TT.Response b) a b
responseBody afb s = (\b -> s {TT.responseBody = b}) <$> afb (TT.responseBody s)
-- * Lenses for 'TT.TwitterErrorMessage'
twitterErrorCode :: Lens' TT.TwitterErrorMessage Int
twitterErrorCode afb s = (\b -> s {TT.twitterErrorCode = b}) <$> afb (TT.twitterErrorCode s)
twitterErrorMessage :: Lens' TT.TwitterErrorMessage Text
twitterErrorMessage afb s = (\b -> s {TT.twitterErrorMessage = b}) <$> afb (TT.twitterErrorMessage s)
-- * Lenses for 'TT.WithCursor'
previousCursor :: forall cursorType cursorKey wrapped. Lens' (TT.WithCursor cursorType cursorKey wrapped) (Maybe cursorType)
previousCursor afb s = (\b -> s {TT.previousCursor = b}) <$> afb (TT.previousCursor s)
nextCursor :: forall cursorType cursorKey wrapped. Lens' (TT.WithCursor cursorType cursorKey wrapped) (Maybe cursorType)
nextCursor afb s = (\b -> s {TT.nextCursor = b}) <$> afb (TT.nextCursor s)
contents :: forall cursorType cursorKey a b. Lens (TT.WithCursor cursorType cursorKey a) (TT.WithCursor cursorType cursorKey b) [a] [b]
contents afb s = (\b -> s {TT.contents = b}) <$> afb (TT.contents s)