module Strive.Client
( Client(..)
, buildClient
) where
import Data.ByteString.Lazy (ByteString)
import Data.Text (Text, unpack)
import Network.HTTP.Client (Request, Response, httpLbs, newManager)
import Network.HTTP.Client.TLS (tlsManagerSettings)
data Client = Client
{ Client -> String
client_accessToken :: String
, Client -> Request -> IO (Response ByteString)
client_requester :: Request -> IO (Response ByteString)
}
instance Show Client where
show :: Client -> String
show Client
client = forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[String
"Client {client_accessToken = ", forall a. Show a => a -> String
show (Client -> String
client_accessToken Client
client), String
"}"]
buildClient :: Maybe Text -> IO Client
buildClient :: Maybe Text -> IO Client
buildClient Maybe Text
accessToken = do
Manager
manager <- ManagerSettings -> IO Manager
newManager ManagerSettings
tlsManagerSettings
forall (m :: * -> *) a. Monad m => a -> m a
return Client
{ client_accessToken :: String
client_accessToken = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" Text -> String
unpack Maybe Text
accessToken
, client_requester :: Request -> IO (Response ByteString)
client_requester = forall a b c. (a -> b -> c) -> b -> a -> c
flip Request -> Manager -> IO (Response ByteString)
httpLbs Manager
manager
}