|
| Network.Browser | | Portability | non-portable (not tested) | | Stability | experimental | | Maintainer | Sigbjorn Finne <sigbjorn.finne@gmail.com> |
|
|
|
| Description |
Session-level interactions over HTTP.
The Network.Browser goes beyond the basic Network.HTTP functionality in
providing support for more involved, and real, request/response interactions over
HTTP. Additional features supported are:
- HTTP Authentication handling
- Transparent handling of redirects
- Cookie stores + transmission.
- Transaction logging
- Proxy-mediated connections.
Example use:
do
rsp <- Network.Browser.browse $ do
setAllowRedirects True -- handle HTTP redirects
request $ getRequest "http://google.com/"
fmap (take 100) (getResponseBody rsp)
|
|
| Synopsis |
|
|
|
| Documentation |
|
| data BrowserState connection |
| BrowserState is the (large) record type tracking the current
settings of the browser.
| Instances | |
|
|
| data BrowserAction conn a |
| BrowserAction is the IO monad, but carrying along a BrowserState.
| Instances | |
|
|
| data Proxy |
| Proxy specifies if a proxy should be used for the request.
| | Constructors | |
|
|
| browse :: BrowserAction conn a -> IO a |
| browse act is the toplevel action to perform a BrowserAction.
Example use: browse (request (getRequest yourURL)).
|
|
| request :: HStream ty => Request ty -> BrowserAction (HandleStream ty) (URI, Response ty) |
| request httpRequest tries to submit the Request httpRequest
to some HTTP server (possibly going via a proxy, see setProxy.)
Upon successful delivery, the URL where the response was fetched from
is returned along with the Response itself.
|
|
| getBrowserState :: BrowserAction t (BrowserState t) |
| getBrowserState returns the current browser config. Useful
for restoring state across BrowserActions.
|
|
| withBrowserState :: BrowserState t -> BrowserAction t a -> BrowserAction t a |
| withBrowserAction st act performs act with BrowserState st.
|
|
| setAllowRedirects :: Bool -> BrowserAction t () |
| setAllowRedirects onOff toggles the willingness to
follow redirects (HTTP responses with 3xx status codes).
|
|
| getAllowRedirects :: BrowserAction t Bool |
| getAllowRedirects returns current setting of the do-chase-redirects flag.
|
|
| setMaxRedirects :: Maybe Int -> BrowserAction t () |
| setMaxRedirects maxCount sets the maxiumum number of forwarding hops
we are willing to jump through. A no-op if the count is negative; if zero,
the max is set to whatever default applies. Notice that setting the max
redirects count does not enable following of redirects itself; use
setAllowRedirects to do so.
|
|
| getMaxRedirects :: BrowserAction t (Maybe Int) |
| getMaxRedirects returns the current setting for the max-redirect count.
If Nothing, the Network.Browser's default is used.
|
|
| data Authority |
| Authority specifies the HTTP Authentication method to use for
a given domain/realm; Basic or Digest.
| | Constructors | |
|
|
| getAuthorities :: BrowserAction t [Authority] |
| getAuthorities return the current set of Authoritys known
to the browser.
|
|
| setAuthorities :: [Authority] -> BrowserAction t () |
|
| addAuthority :: Authority -> BrowserAction t () |
|
| data Challenge |
|
|
| data Qop |
| Constructors | | Instances | |
|
|
| data Algorithm |
| Algorithm controls the digest algorithm to, MD5 or MD5Session.
| | Constructors | | Instances | |
|
|
| getAuthorityGen :: BrowserAction t (URI -> String -> IO (Maybe (String, String))) |
| getAuthorityGen returns the current authority generator
|
|
| setAuthorityGen :: (URI -> String -> IO (Maybe (String, String))) -> BrowserAction t () |
| setAuthorityGen genAct sets the auth generator to genAct.
|
|
| setAllowBasicAuth :: Bool -> BrowserAction t () |
| setAllowBasicAuth onOff enables/disables HTTP Basic Authentication.
|
|
| setMaxErrorRetries :: Maybe Int -> BrowserAction t () |
| setMaxErrorRetries mbMax sets the maximum number of attempts at
transmitting a request. If Nothing, rever to default max.
|
|
| getMaxErrorRetries :: BrowserAction t (Maybe Int) |
| getMaxErrorRetries returns the current max number of error retries.
|
|
| setMaxAuthAttempts :: Maybe Int -> BrowserAction t () |
| setMaxAuthAttempts mbMax sets the maximum number of authentication attempts
to do. If Nothing, rever to default max.
|
|
| getMaxAuthAttempts :: BrowserAction t (Maybe Int) |
| getMaxAuthAttempts returns the current max auth attempts. If Nothing,
the browser's default is used.
|
|
| setCookieFilter :: (URI -> Cookie -> IO Bool) -> BrowserAction t () |
| setCookieFilter fn sets the cookie acceptance filter to fn.
|
|
| getCookieFilter :: BrowserAction t (URI -> Cookie -> IO Bool) |
| getCookieFilter returns the current cookie acceptance filter.
|
|
| defaultCookieFilter :: URI -> Cookie -> IO Bool |
| defaultCookieFilter is the initial cookie acceptance filter.
It welcomes them all into the store :-)
|
|
| userCookieFilter :: URI -> Cookie -> IO Bool |
| userCookieFilter is a handy acceptance filter, asking the
user if he/she is willing to accept an incoming cookie before
adding it to the store.
|
|
| data Cookie |
| Cookie is the Haskell representation of HTTP cookie values.
See its relevant specs for authoritative details.
| | Constructors | | Instances | |
|
|
| getCookies :: BrowserAction t [Cookie] |
| getCookies returns the current set of cookies known to
the browser.
|
|
| setCookies :: [Cookie] -> BrowserAction t () |
| setCookies cookies replaces the set of cookies known to
the browser to cookies. Useful when wanting to restore cookies
used across browse invocations.
|
|
| addCookie :: Cookie -> BrowserAction t () |
| addCookie c adds a cookie to the browser state, removing duplicates.
|
|
| setErrHandler :: (String -> IO ()) -> BrowserAction t () |
| setErrHandler sets the IO action to call when
the browser reports running errors. To disable any
such, set it to const (return ()).
|
|
| setOutHandler :: (String -> IO ()) -> BrowserAction t () |
| setErrHandler sets the IO action to call when
the browser chatters info on its running. To disable any
such, set it to const (return ()).
|
|
| setEventHandler :: Maybe (BrowserEvent ty -> BrowserAction ty ()) -> BrowserAction ty () |
| setEventHandler onBrowserEvent configures event handling.
If onBrowserEvent is Nothing, event handling is turned off;
setting it to Just onEv causes the onEv IO action to be
notified of browser events during the processing of a request
by the Browser pipeline.
|
|
| data BrowserEvent ty |
| BrowserEvent is the event record type that a user-defined handler, set
via setEventHandler, will be passed. It indicates various state changes
encountered in the processing of a given RequestID, along with timestamps
at which they occurred.
| | Constructors | |
|
|
| data BrowserEventType ty |
| BrowserEventType is the enumerated list of events that the browser
internals will report to a user-defined event handler.
| | Constructors | | OpenConnection | | | ReuseConnection | | | RequestSent | | | ResponseEnd ResponseData | | | ResponseFinish | |
|
|
|
| type RequestID = Int |
|
| setProxy :: Proxy -> BrowserAction t () |
| setProxy p will disable proxy usage if p is NoProxy.
If p is Proxy proxyURL mbAuth, then proxyURL is interpreted
as the URL of the proxy to use, possibly authenticating via
Authority information in mbAuth.
|
|
| getProxy :: BrowserAction t Proxy |
| getProxy returns the current proxy settings.
|
|
| setDebugLog :: Maybe String -> BrowserAction t () |
| setDebugLog mbFile turns off debug logging iff mbFile
is Nothing. If set to Just fStem, logs of browser activity
is appended to files of the form fStem-url-authority, i.e.,
fStem is just the prefix for a set of log files, one per host/authority.
|
|
| out :: String -> BrowserAction t () |
|
| err :: String -> BrowserAction t () |
|
| ioAction :: IO a -> BrowserAction t a |
| Lifts an IO action into the BrowserAction monad.
|
|
| defaultGETRequest :: URI -> Request_String |
|
| defaultGETRequest_ :: BufferType a => URI -> Request a |
|
| formToRequest :: Form -> Request_String |
|
| uriDefaultTo :: URI -> URI -> URI |
| uriDefaultTo a b returns a URI that is consistent with the first
argument URI a when read in the context of the second URI b.
If the second argument is not sufficient context for determining
a full URI then anarchy reins.
|
|
| data Form |
|
|
| type FormVar = (String, String) |
|
| Produced by Haddock version 2.4.2 |