-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | wrapper for http-client exposing cookies -- -- wrapper for http-client exposing cookies @package http-client-extra @version 0.1.2.0 module Network.HTTP.ClientExtra.Types data RawL RawL :: RequestHeadersE -> ByteString -> RawL data JSON a JSON :: RequestHeadersE -> a -> JSON a data UrlEncode UrlEncode :: RequestHeadersE -> QueryE -> UrlEncode data UriDataEncode UriDataEncode :: RequestHeadersE -> ByteString -> UriDataEncode data EmptyBody EmptyBody :: RequestHeadersE -> EmptyBody newtype RequestHeadersE RequestHeadersE :: [(Text, Text)] -> RequestHeadersE newtype QueryE QueryE :: QueryText -> QueryE [unQueryE] :: QueryE -> QueryText unRequestHeaders :: RequestHeadersE -> [(CI ByteString, ByteString)] class ToQueryE a toQueryE :: ToQueryE a => a -> QueryE fromQueryE :: QueryE -> ByteString fromQueryE' :: QueryE -> ByteString class (MonadIO m) => ContentEncoder m a where renderPart b part = do { (body, eh) <- buildBody part; return $ renderHeader eh <> body <> renderBoundary b } where renderBoundary b1 = cp "\r\n\ \--" <> cp b1 renderHeader (RequestHeadersE a) = go a where go [] = cp "\r\n\ \\r\n" go ((t, c) : as) = cp "\r\n" <> RequestBodyBS (encodeUtf8 t) <> cp ": " <> RequestBodyBS (encodeUtf8 c) <> go as buildBody :: ContentEncoder m a => a -> m (RequestBody, RequestHeadersE) renderPart :: ContentEncoder m a => ByteString -> a -> m RequestBody cp :: ByteString -> RequestBody instance GHC.Show.Show Network.HTTP.ClientExtra.Types.QueryE instance GHC.Show.Show Network.HTTP.ClientExtra.Types.RequestHeadersE instance Data.Default.Class.Default Network.HTTP.ClientExtra.Types.RequestHeadersE instance GHC.Base.Monoid Network.HTTP.ClientExtra.Types.RequestHeadersE instance Data.Default.Class.Default Network.HTTP.ClientExtra.Types.QueryE instance GHC.Base.Monoid Network.HTTP.ClientExtra.Types.QueryE instance Network.HTTP.ClientExtra.Types.ToQueryE Data.ByteString.Internal.ByteString instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m Network.HTTP.ClientExtra.Types.RawL instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m Network.HTTP.ClientExtra.Types.UriDataEncode instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m Network.HTTP.ClientExtra.Types.EmptyBody instance (Control.Monad.IO.Class.MonadIO m, Data.Aeson.Types.ToJSON.ToJSON a) => Network.HTTP.ClientExtra.Types.ContentEncoder m (Network.HTTP.ClientExtra.Types.JSON a) instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m Network.HTTP.ClientExtra.Types.UrlEncode -- | This module handles building multipart/form-data. Example usage: -- --
--   {-# LANGUAGE OverloadedStrings #-}
--   import Network
--   import Network.HTTP.Conduit
--   import Network.HTTP.Conduit.MultipartFormData
--   
--   import Data.Text.Encoding as TE
--   
--   import Control.Monad
--   
--   main = withSocketsDo $ withManager $ \m -> do
--       req1 <- parseUrl "http://random-cat-photo.net/cat.jpg"
--       res <- httpLbs req1 m
--       req2 <- parseUrl "http://example.org/~friedrich/blog/addPost.hs"
--       flip httpLbs m =<<
--           (formDataBody [partBS "title" "Bleaurgh"
--                         ,partBS "text" $ TE.encodeUtf8 "矢田矢田矢田矢田矢田"
--                         ,partFileSource "file1" "/home/friedrich/Photos/MyLittlePony.jpg"
--                         ,partFileRequestBody "file2" "cat.jpg" $ RequestBodyLBS $ responseBody res]
--               req2)
--   
module Network.HTTP.ClientExtra.Multipart webkitBoundary :: MonadIO m => m ByteString webkitBoundaryPure :: RandomGen g => g -> (ByteString, g) data Multipart m [Multipart] :: (MonadIO m) => Text -> RequestHeadersE -> [CE m] -> Multipart m renderParts :: (MonadIO m) => ByteString -> [CE m] -> m RequestBody data CE m [CE] :: (MonadIO m, ContentEncoder m a) => a -> CE m instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m (Network.HTTP.ClientExtra.Multipart.CE m) instance Control.Monad.IO.Class.MonadIO m => Network.HTTP.ClientExtra.Types.ContentEncoder m (Network.HTTP.ClientExtra.Multipart.Multipart m) module Network.HTTP.ClientExtra newtype QueryE QueryE :: QueryText -> QueryE [unQueryE] :: QueryE -> QueryText class ToQueryE a toQueryE :: ToQueryE a => a -> QueryE newtype RequestHeadersE RequestHeadersE :: [(Text, Text)] -> RequestHeadersE -- | Request Headers type RequestHeaders = [Header] methodBSL :: (MonadIO m, ContentEncoder m b, MonadThrow m) => Manager -> Method -> Maybe CookieJar -> String -> QueryE -> RequestHeadersE -> b -> m (EResp ByteString) methodJSON :: (MonadIO m, ContentEncoder m b, MonadThrow m, Functor m, FromJSON a) => Manager -> Method -> Maybe CookieJar -> String -> QueryE -> RequestHeadersE -> b -> m (EResp a) fromQueryE :: QueryE -> ByteString fromQueryE' :: QueryE -> ByteString type EResp k = Either (ByteString, CookieJar, ResponseHeaders, Int) (k, CookieJar, ResponseHeaders, Int) -- | HTTP method (flat string type). type Method = ByteString