packages feed

snaplet-wordpress-0.1.1.0: src/Snap/Snaplet/Wordpress/HTTP.hs

{-# LANGUAGE OverloadedStrings     #-}

module Snap.Snaplet.Wordpress.HTTP where

import           Control.Lens
import           Data.Monoid
import           Data.Text               (Text)
import qualified Data.Text               as T
import qualified Data.Text.Encoding      as T
import qualified Data.Text.Lazy          as TL
import qualified Data.Text.Lazy.Encoding as TL
import qualified Network.Wreq            as W

newtype Requester = Requester { unRequester :: Text -> [(Text, Text)] -> IO Text }

wreqRequester :: (Text -> IO ())
              -> Text
              -> Text
              -> Requester
wreqRequester logger user passw =
  Requester $ \u ps -> do let opts = (W.defaults & W.params .~ ps
                                      & W.auth .~ W.basicAuth user' pass')
                          logger $ "wreq: " <> u <> " with params: " <>
                            (T.intercalate "&" . map (\(a,b) -> a <> "=" <> b) $ ps)
                          r <- W.getWith opts (T.unpack u)
                          return $ TL.toStrict . TL.decodeUtf8 $ r ^. W.responseBody
  where user' = T.encodeUtf8 user
        pass' = T.encodeUtf8 passw