module Network.Bitcoin.Api.Client ( T.Client (..)
, withClient ) where
import Control.Lens ((&), (?~))
import qualified Network.Wreq as W
import qualified Network.Wreq.Session as WS
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import qualified Network.Bitcoin.Api.Types as T
withClient :: String -> Int -> T.Text -> T.Text -> (T.Client -> IO a) -> IO a
withClient host port user pass callback =
let options :: W.Options
options = W.defaults & applyAuth
applyAuth = W.auth ?~ W.basicAuth (TE.encodeUtf8 user) (TE.encodeUtf8 pass)
generateUrl :: String
generateUrl = "http://" ++ host ++ ":" ++ show port
in WS.withSession (callback . T.Client generateUrl options)