makeRequest :: (MonadBaseControl IO m,
                MonadIO m,
                MonadThrow m, Show a) =>
    a -> String -> [(String, String)] -> m L.ByteString
makeRequest method url body =
  let rBody = BS.pack . urlEncodeVars $ body in
  do
    initReq <- parseUrl url
    let req = initReq
              { method = showBS method
              , requestHeaders = [ ("content-type", "application/x-www-form-urlencoded") ]
              , requestBody = RequestBodyBS $ rBody
              }
    response <- withManager $ httpLbs req
    return $ responseBody response
makeRequest :: (MonadBaseControl IO m,
                MonadIO m,
                MonadThrow m, Show a) =>
    a -> String -> [(String, String)] -> m L.ByteString
makeRequest method url body =
  let rBody = BS.pack . urlEncodeVars $ body in
  do
    initReq <- parseUrl url
    let req = initReq
              { method = showBS method
              , requestHeaders = [ ("content-type", "application/x-www-form-urlencoded") ]
              , requestBody = RequestBodyBS $ rBody
              }
    response <- withManager $ httpLbs req
    return $ responseBody response
makeRequest method url body =
  let rBody = BS.pack . urlEncodeVars $ body in
  do
    initReq <- parseUrl url
    let req = initReq
              { method = showBS method
              , requestHeaders = [ ("content-type", "application/x-www-form-urlencoded") ]
              , requestBody = RequestBodyBS $ rBody
              }
    response <- withManager $ httpLbs req
    return $ responseBody response