packages feed

HTTP 4000.1.1 → 4000.1.2

raw patch · 3 files changed

+134/−129 lines, 3 filesdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

- Network.Browser: err :: String -> BrowserAction t ()
- Network.Browser: out :: String -> BrowserAction t ()
+ Network.Browser: out, err :: String -> BrowserAction t ()

Files

CHANGES view
@@ -1,3 +1,7 @@+Version 4000.1.1: release 2010-11-28+ * Be tolerant of LF (instead of CRLF which is the spec) in responses+   Patch by Chris Pettitt <cpettitt@gmail.com>.+ Version 4000.1.0: release 2010-11-09  * Retroactively fixed CHANGES to refer to 4000.x.x instead of    4004.x.x.
HTTP.cabal view
@@ -1,90 +1,91 @@-Name: HTTP-Version: 4000.1.1-Cabal-Version: >= 1.2-Build-type: Simple-License: BSD3-License-file: LICENSE-Copyright: -  Copyright (c) 2002, Warrick Gray-  Copyright (c) 2002-2005, Ian Lynagh-  Copyright (c) 2003-2006, Bjorn Bringert-  Copyright (c) 2004, Andre Furtado-  Copyright (c) 2004, Ganesh Sittampalam-  Copyright (c) 2004-2005, Dominic Steinitz-  Copyright 2007 Robin Bate Boerop-  Copyright 2008- Sigbjorn Finne-Author: Warrick Gray <warrick.gray@hotmail.com>-Maintainer: Ganesh Sittampalam <ganesh@earth.li>-Homepage: http://projects.haskell.org/http/-Category: Network-Synopsis: A library for client-side HTTP-Description: -- The HTTP package supports client-side web programming in Haskell. It lets you set up - HTTP connections, transmitting requests and processing the responses coming back, all- from within the comforts of Haskell. It's dependent on the network package to operate,- but other than that, the implementation is all written in Haskell.- .- A basic API for issuing single HTTP requests + receiving responses is provided. On top- of that, a session-level abstraction is also on offer  (the @BrowserAction@ monad);- it taking care of handling the management of persistent connections, proxies,- state (cookies) and authentication credentials required to handle multi-step- interactions with a web server.- .- The representation of the bytes flowing across is extensible via the use of a type class,- letting you pick the representation of requests and responses that best fits your use.- Some pre-packaged, common instances are provided for you (@ByteString@, @String@.)- .- Here's an example use:- .- >- >    do- >      rsp <- Network.HTTP.simpleHTTP (getRequest "http://www.haskell.org/")- >              -- fetch document and return it (as a 'String'.)- >      fmap (take 100) (getResponseBody rsp)- >- >    do - >      rsp <- Network.Browser.browse $ do- >               setAllowRedirects True -- handle HTTP redirects- >               request $ getRequest "http://google.com/"- >      fmap (take 100) (getResponseBody rsp)- > - .- Git repository available at <git://github.com/haskell/HTTP.git>--Extra-Source-Files: CHANGES--Flag old-base-  description: Old, monolithic base-  default: False--Library-  Exposed-modules: -                 Network.BufferType,-                 Network.Stream,-                 Network.StreamDebugger,-                 Network.StreamSocket,-                 Network.TCP,                -                 Network.HTTP,-                 Network.HTTP.Headers,-                 Network.HTTP.Base,-                 Network.HTTP.Stream,-                 Network.HTTP.Auth,-                 Network.HTTP.Cookie,-                 Network.HTTP.Proxy,-                 Network.HTTP.HandleStream,-                 Network.Browser-  Other-modules:-                 Network.HTTP.Base64,-                 Network.HTTP.MD5,-                 Network.HTTP.MD5Aux,-                 Network.HTTP.Utils-  GHC-options: -fwarn-missing-signatures -Wall-  Build-depends: base >= 2 && < 4.4, network, parsec, mtl-  if flag(old-base)-    Build-depends: base < 3-  else-    Build-depends: base >= 3, array, old-time, bytestring--  if os(windows)-    Build-depends: Win32+Name: HTTP
+Version: 4000.1.2
+Cabal-Version: >= 1.2
+Build-type: Simple
+License: BSD3
+License-file: LICENSE
+Copyright: 
+  Copyright (c) 2002, Warrick Gray
+  Copyright (c) 2002-2005, Ian Lynagh
+  Copyright (c) 2003-2006, Bjorn Bringert
+  Copyright (c) 2004, Andre Furtado
+  Copyright (c) 2004, Ganesh Sittampalam
+  Copyright (c) 2004-2005, Dominic Steinitz
+  Copyright 2007 Robin Bate Boerop
+  Copyright 2008- Sigbjorn Finne
+Author: Warrick Gray <warrick.gray@hotmail.com>
+Maintainer: Ganesh Sittampalam <ganesh@earth.li>
+Homepage: http://projects.haskell.org/http/
+Category: Network
+Synopsis: A library for client-side HTTP
+Description: 
+
+ The HTTP package supports client-side web programming in Haskell. It lets you set up 
+ HTTP connections, transmitting requests and processing the responses coming back, all
+ from within the comforts of Haskell. It's dependent on the network package to operate,
+ but other than that, the implementation is all written in Haskell.
+ .
+ A basic API for issuing single HTTP requests + receiving responses is provided. On top
+ of that, a session-level abstraction is also on offer  (the @BrowserAction@ monad);
+ it taking care of handling the management of persistent connections, proxies,
+ state (cookies) and authentication credentials required to handle multi-step
+ interactions with a web server.
+ .
+ The representation of the bytes flowing across is extensible via the use of a type class,
+ letting you pick the representation of requests and responses that best fits your use.
+ Some pre-packaged, common instances are provided for you (@ByteString@, @String@.)
+ .
+ Here's an example use:
+ .
+ >
+ >    do
+ >      rsp <- Network.HTTP.simpleHTTP (getRequest "http://www.haskell.org/")
+ >              -- fetch document and return it (as a 'String'.)
+ >      fmap (take 100) (getResponseBody rsp)
+ >
+ >    do 
+ >      rsp <- Network.Browser.browse $ do
+ >               setAllowRedirects True -- handle HTTP redirects
+ >               request $ getRequest "http://google.com/"
+ >      fmap (take 100) (getResponseBody rsp)
+ > 
+ .
+ Git repository available at <git://github.com/haskell/HTTP.git>
+
+Extra-Source-Files: CHANGES
+
+Flag old-base
+  description: Old, monolithic base
+  default: False
+
+Library
+  Exposed-modules: 
+                 Network.BufferType,
+                 Network.Stream,
+                 Network.StreamDebugger,
+                 Network.StreamSocket,
+                 Network.TCP,                
+                 Network.HTTP,
+                 Network.HTTP.Headers,
+                 Network.HTTP.Base,
+                 Network.HTTP.Stream,
+                 Network.HTTP.Auth,
+                 Network.HTTP.Cookie,
+                 Network.HTTP.Proxy,
+                 Network.HTTP.HandleStream,
+                 Network.Browser
+  Other-modules:
+                 Network.HTTP.Base64,
+                 Network.HTTP.MD5,
+                 Network.HTTP.MD5Aux,
+                 Network.HTTP.Utils
+  GHC-options: -fwarn-missing-signatures -Wall
+  Build-depends: base >= 2 && < 4.5, network, parsec, mtl
+  Extensions: FlexibleInstances
+  if flag(old-base)
+    Build-depends: base < 3
+  else
+    Build-depends: base >= 3, array, old-time, bytestring
+
+  if os(windows)
+    Build-depends: Win32
Network/Browser.hs view
@@ -540,14 +540,14 @@       -- Presumably this is the user's explicit and preferred proxy server.     Proxy{} -> return p     NoProxy{} -> do-    flg <- getBS bsCheckProxy-    if not flg-     then return p -     else do-      np <- ioAction $ fetchProxy True{-issue warning on stderr if ill-formed...-}-       -- note: this resets the check-proxy flag; a one-off affair.-      setProxy np-      return np+     flg <- getBS bsCheckProxy+     if not flg+      then return p +      else do+       np <- ioAction $ fetchProxy True{-issue warning on stderr if ill-formed...-}+        -- note: this resets the check-proxy flag; a one-off affair.+       setProxy np+       return np  -- | @setCheckForProxy flg@ sets the one-time check for proxy -- flag to @flg@. If @True@, the session will try to determine@@ -852,37 +852,37 @@ 	case allow_redirs of 	  False -> return (Right (uri,rsp)) 	  _ -> do-          case retrieveHeaders HdrLocation rsp of-           [] -> do -	     err "No Location: header in redirect response"-             return (Right (uri,rsp))-           (Header _ u:_) -> -	     case parseURIReference u of-               Nothing -> do-                 err ("Parse of Location: header in a redirect response failed: " ++ u)-                 return (Right (uri,rsp))-               Just newURI-		| {-uriScheme newURI_abs /= uriScheme uri && -}(not (supportedScheme newURI_abs)) -> do-		   err ("Unable to handle redirect, unsupported scheme: " ++ show newURI_abs)-		   return (Right (uri, rsp))-                | otherwise -> do		     -  	           out ("Redirecting to " ++ show newURI_abs ++ " ...") -                   -                   -- Redirect using GET request method, depending on-                   -- response code.-                   let toGet = x `elem` [2,3]-                       method = if toGet then GET else rqMethod rq-                       rq1 = rq { rqMethod=method, rqURI=newURI_abs }-                       rq2 = if toGet then (replaceHeader HdrContentLength "0") (rq1 {rqBody = nullVal}) else rq1-                   -                   request' nullVal-			    rqState{ reqDenies     = 0-			           , reqRedirects  = succ(reqRedirects rqState)-				   , reqStopOnDeny = True-				   }-                            rq2-                where-                  newURI_abs = maybe newURI id (newURI `relativeTo` uri)+           case retrieveHeaders HdrLocation rsp of+            [] -> do +	      err "No Location: header in redirect response"+              return (Right (uri,rsp))+            (Header _ u:_) -> +	      case parseURIReference u of+                Nothing -> do+                  err ("Parse of Location: header in a redirect response failed: " ++ u)+                  return (Right (uri,rsp))+                Just newURI+	         | {-uriScheme newURI_abs /= uriScheme uri && -}(not (supportedScheme newURI_abs)) -> do+	            err ("Unable to handle redirect, unsupported scheme: " ++ show newURI_abs)+	            return (Right (uri, rsp))+                 | otherwise -> do		     +  	            out ("Redirecting to " ++ show newURI_abs ++ " ...") +                    +                    -- Redirect using GET request method, depending on+                    -- response code.+                    let toGet = x `elem` [2,3]+                        method = if toGet then GET else rqMethod rq+                        rq1 = rq { rqMethod=method, rqURI=newURI_abs }+                        rq2 = if toGet then (replaceHeader HdrContentLength "0") (rq1 {rqBody = nullVal}) else rq1+                    +                    request' nullVal+	         	    rqState{ reqDenies     = 0+	         	           , reqRedirects  = succ(reqRedirects rqState)+	         		   , reqStopOnDeny = True+	         		   }+                             rq2+                 where+                   newURI_abs = maybe newURI id (newURI `relativeTo` uri)        (3,0,5) ->         case retrieveHeaders HdrLocation rsp of