-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple wrapper to use wreq without Strings -- -- This library wraps all functions from Network.Wreq which -- expects a String and replaces the String Type with the -- Network.Wreq.StringLess.StringLike Type-Class. -- -- Instances for Network.Wreq.StringLess.StringLike are given for: -- -- -- -- So you can use any of this types instead of String. -- -- To use this library, replace your the wreq dependency from -- your cabal file with wreq-stringless and import -- Network.Wreq.StringLess instead of Network.Wreq. -- -- The versions of this library correspond with the version of -- wreq. -- -- see -- https://github.com/j-keck/wreq-stringless/tree/master/examples -- for examples. @package wreq-stringless @version 0.5.2.0 -- | This module re-exports anything from Network.Wreq.Cache. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq-Cache.html module Network.Wreq.StringLess.Cache -- | This module re-exports anything from -- Network.Wreq.Cache.Store. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq-Cache-Store.html module Network.Wreq.StringLess.Cache.Store -- | This module re-exports anything from Network.Wreq.Lens. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq-Lens.html module Network.Wreq.StringLess.Lens -- | Simple Type-Class to use string-like datatypes instead of -- String. module Network.Wreq.StringLess.StringLike class IsString s => StringLike s toString :: StringLike s => s -> String instance Network.Wreq.StringLess.StringLike.StringLike Data.Text.Internal.Text instance Network.Wreq.StringLess.StringLike.StringLike Data.Text.Internal.Lazy.Text instance Network.Wreq.StringLess.StringLike.StringLike Data.ByteString.Internal.ByteString instance Network.Wreq.StringLess.StringLike.StringLike Data.ByteString.Lazy.Internal.ByteString -- | Use this module instead of Network.Wreq.Session to use -- string-like datatypes. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq-Session.html module Network.Wreq.StringLess.Session -- | A session that spans multiple requests. This is responsible for cookie -- management and TCP connection reuse. data Session :: * -- | Create a Session, passing it to the given function. The -- Session will no longer be valid after that function returns. -- -- This session manages cookies and uses default session manager -- configuration. withSession :: () => (Session -> IO a) -> IO a -- | Create a session. -- -- This uses the default session manager settings, but does not manage -- cookies. It is intended for use with REST-like HTTP-based APIs, which -- typically do not use cookies. withAPISession :: () => (Session -> IO a) -> IO a -- | Create a session, using the given manager settings. This session -- manages cookies. withSessionWith :: () => ManagerSettings -> (Session -> IO a) -> IO a -- | Create a session, using the given cookie jar and manager settings. withSessionControl :: () => Maybe CookieJar -> ManagerSettings -> (Session -> IO a) -> IO a get :: StringLike s => Session -> s -> IO (Response ByteString) post :: StringLike s => Postable a => Session -> s -> a -> IO (Response ByteString) head_ :: StringLike s => Session -> s -> IO (Response ()) options :: StringLike s => Session -> s -> IO (Response ()) put :: StringLike s => Putable a => Session -> s -> a -> IO (Response ByteString) delete :: StringLike s => Session -> s -> IO (Response ByteString) customMethod :: StringLike s => s -> Session -> s -> IO (Response ByteString) getWith :: StringLike s => Options -> Session -> s -> IO (Response ByteString) postWith :: StringLike s => Postable a => Options -> Session -> s -> a -> IO (Response ByteString) headWith :: StringLike s => Options -> Session -> s -> IO (Response ()) optionsWith :: StringLike s => Options -> Session -> s -> IO (Response ()) putWith :: StringLike s => Putable a => Options -> Session -> s -> a -> IO (Response ByteString) deleteWith :: StringLike s => Options -> Session -> s -> IO (Response ByteString) customMethodWith :: StringLike s => s -> Options -> Session -> s -> IO (Response ByteString) seshRun :: Lens' Session (Session -> Run Body -> Run Body) -- | Use this module instead of Network.Wreq to use string-like -- datatypes. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq.html module Network.Wreq.StringLess get :: StringLike s => s -> IO (Response ByteString) getWith :: StringLike s => Options -> s -> IO (Response ByteString) post :: StringLike s => Postable a => s -> a -> IO (Response ByteString) postWith :: StringLike s => Postable a => Options -> s -> a -> IO (Response ByteString) head_ :: StringLike s => s -> IO (Response ()) headWith :: StringLike s => Options -> s -> IO (Response ()) options :: StringLike s => s -> IO (Response ()) optionsWith :: StringLike s => Options -> s -> IO (Response ()) put :: StringLike s => Putable a => s -> a -> IO (Response ByteString) putWith :: StringLike s => Putable a => Options -> s -> a -> IO (Response ByteString) delete :: StringLike s => s -> IO (Response ByteString) deleteWith :: StringLike s => Options -> s -> IO (Response ByteString) customMethod :: StringLike s => s -> s -> IO (Response ByteString) customMethodWith :: StringLike s => s -> Options -> s -> IO (Response ByteString) customPayloadMethod :: StringLike s => Postable a => s -> s -> a -> IO (Response ByteString) customPayloadMethodWith :: StringLike s => Postable a => s -> Options -> s -> a -> IO (Response ByteString) foldGet :: StringLike s => (a -> ByteString -> IO a) -> a -> s -> IO a foldGetWith :: StringLike s => Options -> (a -> ByteString -> IO a) -> a -> s -> IO a -- | Options for configuring a client. data Options :: * defaults :: Options -- | A lens onto configuration of the connection manager provided by the -- http-client package. -- -- In this example, we enable the use of OpenSSL for (hopefully) secure -- connections: -- --
--   import OpenSSL.Session (context)
--   import Network.HTTP.Client.OpenSSL
--   
--   let opts = defaults & manager .~ Left (opensslManagerSettings context)
--   withOpenSSL $
--     getWith opts "https://httpbin.org/get"
--    
--   
-- -- In this example, we also set the response timeout to 10000 -- microseconds: -- --
--   import OpenSSL.Session (context)
--   import Network.HTTP.Client.OpenSSL
--   import Network.HTTP.Client (defaultManagerSettings, managerResponseTimeout)
--   
--   let opts = defaults & manager .~ Left (opensslManagerSettings context)
--                       & manager .~ Left (defaultManagerSettings { managerResponseTimeout = Just 10000 } )
--   
--   withOpenSSL $
--     getWith opts "https://httpbin.org/get"
--    
--   
manager :: Lens' Options Either ManagerSettings Manager -- | A lens onto all headers with the given name (there can legitimately be -- zero or more). -- -- Example: -- --
--   let opts = defaults & header "Accept" .~ ["*/*"]
--   getWith opts "http://httpbin.org/get"
--    
--   
header :: HeaderName -> Lens' Options [ByteString] -- | A lens onto all query parameters with the given name (there can -- legitimately be zero or more). -- -- In this example, we construct the query URL -- "http://httpbin.org/get?foo=bar&foo=quux". -- --
--   let opts = defaults & param "foo" .~ ["bar", "quux"]
--   getWith opts "http://httpbin.org/get"
--    
--   
param :: Text -> Lens' Options [Text] -- | A lens onto the maximum number of redirects that will be followed -- before an exception is thrown. -- -- In this example, a HttpException will be thrown with a -- TooManyRedirects constructor, because the maximum number of -- redirects allowed will be exceeded. -- --
--   let opts = defaults & redirects .~ 3
--   getWith opts "http://httpbin.org/redirect/5"
--    
--   
redirects :: Lens' Options Int -- | A lens onto all headers (there can legitimately be zero or more). -- -- In this example, we print all the headers sent by default with every -- request. -- --
--   print (defaults ^. headers)
--    
--   
headers :: Lens' Options [Header] -- | A lens onto all query parameters. params :: Lens' Options [(Text, Text)] -- | A traversal onto the cookie with the given name, if one exists. -- -- N.B. This is an "illegal" Traversal': we can change the -- cookieName of the associated Cookie so that it differs -- from the name provided to this function. cookie :: ByteString -> Traversal' Options Cookie -- | A lens onto all cookies. cookies :: Lens' Options Maybe CookieJar -- | A lens to get the optional status check function checkResponse :: Lens' Options Maybe ResponseChecker -- | Supported authentication types. -- -- Do not use HTTP authentication unless you are using TLS encryption. -- These authentication tokens can easily be captured and reused by an -- attacker if transmitted in the clear. data Auth :: * data AWSAuthVersion :: * -- | AWS request signing version 4 AWSv4 :: AWSAuthVersion -- | A lens onto request authentication. -- -- Example (note the use of TLS): -- --
--   let opts = defaults & auth ?~ basicAuth "user" "pass"
--   getWith opts "https://httpbin.org/basic-auth/user/pass"
--    
--   
auth :: Lens' Options Maybe Auth -- | Basic authentication. This consists of a plain username and password. -- -- Example (note the use of TLS): -- --
--   let opts = defaults & auth ?~ basicAuth "user" "pass"
--   getWith opts "https://httpbin.org/basic-auth/user/pass"
--    
--   
-- -- Note here the use of the ?~ setter to turn an Auth into -- a Maybe Auth, to make the type of the RHS compatible -- with the auth lens. -- --
--   >>> let opts = defaults & auth ?~ basicAuth "user" "pass"
--   
--   >>> r <- getWith opts "https://httpbin.org/basic-auth/user/pass"
--   
--   >>> r ^? responseBody . key "authenticated"
--   Just (Bool True)
--   
basicAuth :: ByteString -> ByteString -> Auth -- | OAuth1 authentication. This consists of a consumer token, a consumer -- secret, a token and a token secret oauth1Auth :: ByteString -> ByteString -> ByteString -> ByteString -> Auth -- | An OAuth2 bearer token. This is treated by many services as the -- equivalent of a username and password. -- -- Example (note the use of TLS): -- --
--   let opts = defaults & auth ?~ oauth2Bearer "1234abcd"
--   getWith opts "https://public-api.wordpress.com/rest/v1/me/"
--    
--   
oauth2Bearer :: ByteString -> Auth -- | A not-quite-standard OAuth2 bearer token (that seems to be used only -- by GitHub). This will be treated by whatever services accept it as the -- equivalent of a username and password. -- -- Example (note the use of TLS): -- --
--   let opts = defaults & auth ?~ oauth2Token "abcd1234"
--   getWith opts "https://api.github.com/user"
--    
--   
oauth2Token :: ByteString -> Auth -- | AWS v4 request signature. -- -- Example (note the use of TLS): -- --
--   let opts = defaults & auth ?~ 'awsAuth AWSv4' "key" "secret"
--   getWith opts "https://dynamodb.us-west-2.amazonaws.com"
--    
--   
awsAuth :: AWSAuthVersion -> ByteString -> ByteString -> Auth -- | Define a HTTP proxy, consisting of a hostname and port number. data Proxy :: * Proxy :: ByteString -> Int -> Proxy -- | A lens onto proxy configuration. -- -- Example: -- --
--   let opts = defaults & proxy ?~ httpProxy "localhost" 8000
--   getWith opts "http://httpbin.org/get"
--    
--   
-- -- Note here the use of the ?~ setter to turn a Proxy into -- a Maybe Proxy, to make the type of the RHS compatible -- with the proxy lens. proxy :: Lens' Options Maybe Proxy -- | Proxy configuration. -- -- Example: -- --
--   let opts = defaults & proxy ?~ httpProxy "localhost" 8000
--   getWith opts "http://httpbin.org/get"
--    
--   
-- -- Note here the use of the ?~ setter to turn a Proxy into -- a Maybe Proxy, to make the type of the RHS compatible -- with the proxy lens. httpProxy :: ByteString -> Int -> Proxy withManager :: () => (Options -> IO a) -> IO a -- | A product type for representing more complex payload types. data Payload :: * Raw :: ContentType -> RequestBody -> Payload -- | A key/value pair for an application/x-www-form-urlencoded -- POST request body. data FormParam :: * [:=] :: FormParam -- | A type that can be rendered as the value portion of a key/value pair -- for use in an application/x-www-form-urlencoded POST body. -- Intended for use with the FormParam type. -- -- The instances for String, strict Text, and lazy -- Text are all encoded using UTF-8 before being URL-encoded. -- -- The instance for Maybe gives an empty string on Nothing, -- and otherwise uses the contained type's instance. class FormValue a -- | A single part of a multipart message. data Part :: * -- | A lens onto the name of the input element associated -- with part of a multipart form upload. partName :: Lens' Part Text -- | A lens onto the filename associated with part of a multipart form -- upload. partFileName :: Lens' Part Maybe String -- | A lens onto the content-type associated with part of a multipart form -- upload. partContentType :: Traversal' Part Maybe MimeType -- | A lens onto the code that fetches the data associated with part of a -- multipart form upload. partGetBody :: Lens' Part IO RequestBody -- | Make a Part whose content is a strict ByteString. -- -- The Part does not have a file name or content type associated -- with it. partBS :: Text -> ByteString -> Part -- | Make a Part whose content is a lazy ByteString. -- -- The Part does not have a file name or content type associated -- with it. partLBS :: Text -> ByteString -> Part -- | Make a Part whose content is a strict Text, encoded as -- UTF-8. -- -- The Part does not have a file name or content type associated -- with it. partText :: Text -> Text -> Part -- | Make a Part whose content is a String, encoded as -- UTF-8. -- -- The Part does not have a file name or content type associated -- with it. partString :: Text -> String -> Part -- | Make a Part from a file. -- -- The entire file will reside in memory at once. If you want constant -- memory usage, use partFileSource. -- -- The FilePath supplied will be used as the file name of the -- Part. If you do not want to reveal this name to the server, you -- must remove it prior to uploading. -- -- The Part does not have a content type associated with it. partFile :: Text -> FilePath -> Part -- | Stream a Part from a file. -- -- The FilePath supplied will be used as the file name of the -- Part. If you do not want to reveal this name to the server, you -- must remove it prior to uploading. -- -- The Part does not have a content type associated with it. partFileSource :: Text -> FilePath -> Part -- | A simple representation of the HTTP response. -- -- Since 0.1.0 data Response body :: * -> * -- | A lens onto the body of a response. -- --
--   r <- get "http://httpbin.org/get"
--   print (r ^. responseBody)
--    
--   
responseBody :: Functor f => (body0 -> f body1) -> Response body0 -> f Response body1 -- | A lens onto all matching named headers in an HTTP response. -- -- To access exactly one header (the result will be the empty string if -- there is no match), use the (^.) operator. -- --
--   r <- get "http://httpbin.org/get"
--   print (r ^. responseHeader "Content-Type")
--    
--   
-- -- To access at most one header (the result will be Nothing if -- there is no match), use the (^?) operator. -- --
--   r <- get "http://httpbin.org/get"
--   print (r ^? responseHeader "Content-Transfer-Encoding")
--    
--   
-- -- To access all (zero or more) matching headers, use the (^..) -- operator. -- --
--   r <- get "http://httpbin.org/get"
--   print (r ^.. responseHeader "Set-Cookie")
--    
--   
responseHeader :: () => HeaderName -> Traversal' Response body ByteString -- | A fold over Link headers, matching on both parameter name and -- value. -- -- For example, here is a Link header returned by the GitHub -- search API. -- --
--   Link:
--     <https://api.github.com/search/code?q=addClass+user%3Amozilla&page=2>; rel="next",
--     <https://api.github.com/search/code?q=addClass+user%3Amozilla&page=34>; rel="last"
--   
-- -- And here is an example of how we can retrieve the URL for the -- next link programatically. -- --
--   r <- get "https://api.github.com/search/code?q=addClass+user:mozilla"
--   print (r ^? responseLink "rel" "next" . linkURL)
--    
--   
responseLink :: () => ByteString -> ByteString -> Fold Response body Link -- | A fold over any cookies that match the given name. -- --
--   r <- get "http://www.nytimes.com/"
--   print (r ^? responseCookie "RMID")
--    
--   
responseCookie :: () => ByteString -> Fold Response body Cookie -- | A lens onto all headers in an HTTP response. responseHeaders :: Functor f => (ResponseHeaders -> f ResponseHeaders) -> Response body -> f Response body -- | A lens onto all cookies set in the response. responseCookieJar :: Functor f => (CookieJar -> f CookieJar) -> Response body -> f Response body -- | A lens onto the status of an HTTP response. responseStatus :: Functor f => (Status -> f Status) -> Response body -> f Response body -- | HTTP Status. -- -- Only the statusCode is used for comparisons. -- -- Please use mkStatus to create status codes from code and -- message, or the Enum instance or the status code constants -- (like ok200). There might be additional record members in the -- future. -- -- Note that the Show instance is only for debugging. data Status :: * -- | A lens onto the numeric identifier of an HTTP status. statusCode :: Lens' Status Int -- | A lens onto the textual description of an HTTP status. statusMessage :: Lens' Status ByteString -- | An element of a Link header. data Link :: * -- | A lens onto the URL portion of a Link element. linkURL :: Lens' Link ByteString -- | A lens onto the parameters of a Link element. linkParams :: Lens' Link [(ByteString, ByteString)] -- | The error type used by asJSON and asValue if a failure -- occurs when parsing a response body as JSON. data JSONError :: * JSONError :: String -> JSONError -- | Convert the body of an HTTP response from JSON to a suitable Haskell -- type. -- -- In this example, we use asJSON in the IO monad, where -- it will throw a JSONError exception if conversion to the -- desired type fails. -- --
--    {-# LANGUAGE DeriveGeneric #-}
--   import GHC.Generics (Generic)
--   
--    {- This Haskell type corresponds to the structure of a
--      response body from httpbin.org. -}
--   
--   data GetBody = GetBody {
--       headers :: Map Text Text
--     , args :: Map Text Text
--     , origin :: Text
--     , url :: Text
--     } deriving (Show, Generic)
--   
--    -- Get GHC to derive a FromJSON instance for us.
--   instance FromJSON GetBody
--   
--    {- The fact that we want a GetBody below will be inferred by our
--      use of the "headers" accessor function. -}
--   
--   foo = do
--     r <- asJSON =<< get "http://httpbin.org/get"
--     print (headers (r ^. responseBody))
--    
--   
-- -- If we use asJSON in the Either monad, it will return -- Left with a JSONError payload if conversion fails, and -- Right with a Response whose responseBody is the -- converted value on success. asJSON :: (MonadThrow m, FromJSON a) => Response ByteString -> m Response a -- | Convert the body of an HTTP response from JSON to a Value. -- -- In this example, we use asValue in the IO monad, where -- it will throw a JSONError exception if the conversion to -- Value fails. -- --
--   foo = do
--     r <- asValue =<< get "http://httpbin.org/get"
--     print (r ^? responseBody . key "headers" . key "User-Agent")
--    
--   
asValue :: MonadThrow m => Response ByteString -> m Response Value data Cookie :: * -- | A lens onto the name of a cookie. cookieName :: Lens' Cookie ByteString -- | A lens onto the value of a cookie. cookieValue :: Lens' Cookie ByteString -- | A lens onto the expiry time of a cookie. cookieExpiryTime :: Lens' Cookie UTCTime -- | A lens onto the domain of a cookie. cookieDomain :: Lens' Cookie ByteString -- | A lens onto the path of a cookie. cookiePath :: Lens' Cookie ByteString -- | Turn an attoparsec Parser into a Fold. -- -- Both headers and bodies can contain complicated data that we may need -- to parse. -- -- Example: when responding to an OPTIONS request, a server may return -- the list of verbs it supports in any order, up to and including -- changing the order on every request (which httpbin.org /actually -- does/!). To deal with this possibility, we parse the list, then sort -- it. -- --
--   >>> import Data.Attoparsec.ByteString.Char8 as A
--   
--   >>> import Data.List (sort)
--   
--   >>> 
--   
--   >>> let comma = skipSpace >> "," >> skipSpace
--   
--   >>> let verbs = A.takeWhile isAlpha_ascii `sepBy` comma
--   
--   >>> 
--   
--   >>> r <- options "http://httpbin.org/get"
--   
--   >>> r ^. responseHeader "Allow" . atto verbs . to sort
--   ["GET","HEAD","OPTIONS"]
--   
atto :: () => Parser a -> Fold ByteString a -- | The same as atto, but ensures that the parser consumes the -- entire input. -- -- Equivalent to: -- --
--   atto_ myParser = atto (myParser <* endOfInput)
--    
--   
atto_ :: () => Parser a -> Fold ByteString a -- | This module re-exports anything from Network.Wreq.Types. -- -- see -- https://hackage.haskell.org/package/wreq/docs/Network-Wreq-Types.html module Network.Wreq.StringLess.Types