| Httplib2 | 
 |  | 
 | -------------------------------------------------------------------- | 
 | Introduction | 
 |  | 
 | A comprehensive HTTP client library, httplib2.py supports many  | 
 | features left out of other HTTP libraries. | 
 |  | 
 | HTTP and HTTPS | 
 |  HTTPS support is only available if the socket module was  | 
 |  compiled with SSL support.  | 
 | Keep-Alive | 
 |  Supports HTTP 1.1 Keep-Alive, keeping the socket open and  | 
 |  performing multiple requests over the same connection if  | 
 |  possible.  | 
 | Authentication | 
 |  The following three types of HTTP Authentication are  | 
 |  supported. These can be used over both HTTP and HTTPS. | 
 |  | 
 |  * Digest | 
 |  * Basic | 
 |  * WSSE | 
 |  | 
 | Caching | 
 |  The module can optionally operate with a private cache that  | 
 |  understands the Cache-Control: header and uses both the ETag  | 
 |  and Last-Modified cache validators.  | 
 | All Methods | 
 |  The module can handle any HTTP request method, not just GET  | 
 |  and POST. | 
 | Redirects | 
 |  Automatically follows 3XX redirects on GETs. | 
 | Compression | 
 |  Handles both 'compress' and 'gzip' types of compression. | 
 | Lost update support | 
 |  Automatically adds back ETags into PUT requests to resources i | 
 |  we have already cached. This implements Section 3.2 of  | 
 |  Detecting the Lost Update Problem Using Unreserved Checkout | 
 | Unit Tested | 
 |  A large and growing set of unit tests.  | 
 |  | 
 |  | 
 | For more information on this module, see: | 
 |  | 
 |  http://bitworking.org/projects/httplib2/ | 
 |  | 
 |  | 
 | -------------------------------------------------------------------- | 
 | Installation | 
 |  | 
 | The httplib2 module is shipped as a distutils package. To install | 
 | the library, unpack the distribution archive, and issue the following | 
 | command: | 
 |  | 
 |  $ python setup.py install | 
 |  | 
 |  | 
 | -------------------------------------------------------------------- | 
 | Usage | 
 | A simple retrieval: | 
 |  | 
 |  import httplib2 | 
 |  h = httplib2.Http(".cache") | 
 |  (resp_headers, content) = h.request("http://example.org/", "GET") | 
 |  | 
 | The 'content' is the content retrieved from the URL. The content  | 
 | is already decompressed or unzipped if necessary. | 
 |  | 
 | To PUT some content to a server that uses SSL and Basic authentication: | 
 |  | 
 |  import httplib2 | 
 |  h = httplib2.Http(".cache") | 
 |  h.add_credentals('name', 'password') | 
 |  (resp, content) = h.request("https://example.org/chapter/2",  | 
 |  "PUT", body="This is text",  | 
 |  headers={'content-type':'text/plain'} ) | 
 |  | 
 | Use the Cache-Control: header to control how the caching operates. | 
 |  | 
 |  import httplib2 | 
 |  h = httplib2.Http(".cache") | 
 |  (resp, content) = h.request("http://bitworking.org/", "GET") | 
 |  ... | 
 |  (resp, content) = h.request("http://bitworking.org/", "GET",  | 
 |  headers={'cache-control':'no-cache'}) | 
 |  | 
 | The first request will be cached and since this is a request  | 
 | to bitworking.org it will be set to be cached for two hours,  | 
 | because that is how I have my server configured. Any subsequent  | 
 | GET to that URI will return the value from the on-disk cache  | 
 | and no request will be made to the server. You can use the  | 
 | Cache-Control: header to change the caches behavior and in  | 
 | this example the second request adds the Cache-Control:  | 
 | header with a value of 'no-cache' which tells the library  | 
 | that the cached copy must not be used when handling this request.  | 
 |  | 
 |  | 
 | -------------------------------------------------------------------- | 
 | Httplib2 Software License | 
 |  | 
 | Copyright (c) 2006 by Joe Gregorio | 
 |  | 
 | Permission is hereby granted, free of charge, to any person  | 
 | obtaining a copy of this software and associated documentation  | 
 | files (the "Software"), to deal in the Software without restriction,  | 
 | including without limitation the rights to use, copy, modify, merge,  | 
 | publish, distribute, sublicense, and/or sell copies of the Software,  | 
 | and to permit persons to whom the Software is furnished to do so,  | 
 | subject to the following conditions: | 
 |  | 
 | The above copyright notice and this permission notice shall be  | 
 | included in all copies or substantial portions of the Software. | 
 |  | 
 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  | 
 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES  | 
 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND  | 
 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS  | 
 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  | 
 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN  | 
 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  | 
 | SOFTWARE. | 
 |  |