| Index: tools/telemetry/third_party/gsutilz/third_party/httplib2/libhttplib2.tex
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/httplib2/libhttplib2.tex b/tools/telemetry/third_party/gsutilz/third_party/httplib2/libhttplib2.tex
|
| deleted file mode 100644
|
| index 0c958c3f5bb8ffeda85dbecbc61dcfe8464be3fc..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/httplib2/libhttplib2.tex
|
| +++ /dev/null
|
| @@ -1,454 +0,0 @@
|
| -% Template for a library manual section.
|
| -% PLEASE REMOVE THE COMMENTS AFTER USING THE TEMPLATE
|
| -%
|
| -% Complete documentation on the extended LaTeX markup used for Python
|
| -% documentation is available in ``Documenting Python'', which is part
|
| -% of the standard documentation for Python. It may be found online
|
| -% at:
|
| -%
|
| -% http://www.python.org/doc/current/doc/doc.html
|
| -
|
| -% ==== 0. ====
|
| -% Copy this file to <mydir>/lib<mymodule>.tex, and edit that file
|
| -% according to the instructions below.
|
| -
|
| -
|
| -% ==== 1. ====
|
| -% The section prologue. Give the section a title and provide some
|
| -% meta-information. References to the module should use
|
| -% \refbimodindex, \refstmodindex, \refexmodindex or \refmodindex, as
|
| -% appropriate.
|
| -
|
| -
|
| -\section{\module{httplib2}
|
| - A comprehensive HTTP client library. }
|
| -
|
| -% Choose one of these to specify the module module name. If there's
|
| -% an underscore in the name, use
|
| -% \declaremodule[modname]{...}{mod_name} instead.
|
| -%
|
| -\declaremodule{}{httplib2} % not standard, in Python
|
| -
|
| -% Portability statement: Uncomment and fill in the parameter to specify the
|
| -% availability of the module. The parameter can be Unix, IRIX, SunOS, Mac,
|
| -% Windows, or lots of other stuff. When ``Mac'' is specified, the availability
|
| -% statement will say ``Macintosh'' and the Module Index may say ``Mac''.
|
| -% Please use a name that has already been used whenever applicable. If this
|
| -% is omitted, no availability statement is produced or implied.
|
| -%
|
| -% \platform{Unix}
|
| -
|
| -% These apply to all modules, and may be given more than once:
|
| -
|
| -\moduleauthor{Joe Gregorio}{joe@bitworking.org} % Author of the module code;
|
| - % omit if not known.
|
| -\sectionauthor{Joe Gregorio}{joe@bitworking.org} % Author of the documentation,
|
| - % even if not a module section.
|
| -
|
| -
|
| -% Leave at least one blank line after this, to simplify ad-hoc tools
|
| -% that are sometimes used to massage these files.
|
| -\modulesynopsis{A comprehensive HTTP client library, \module{httplib2} supports many features left out of other HTTP libraries.}
|
| -
|
| -
|
| -% ==== 2. ====
|
| -% Give a short overview of what the module does.
|
| -% If it is platform specific, mention this.
|
| -% Mention other important restrictions or general operating principles.
|
| -% For example:
|
| -
|
| -The \module{httplib2} module is a comprehensive HTTP client library with the following features:
|
| -
|
| -\begin{description}
|
| -\item[HTTP and HTTPS] HTTPS support is only available if the socket module was compiled with SSL support.
|
| -\item[Keep-Alive] Supports HTTP 1.1 Keep-Alive, keeping the socket open and performing multiple requests over the same connection if possible.
|
| -\item[Authentication] The following three types of HTTP Authentication are supported. These can be used over both HTTP and HTTPS.
|
| - \begin{itemize}
|
| - \item Digest
|
| - \item Basic
|
| - \item WSSE
|
| - \end{itemize}
|
| -\item[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.
|
| -\item[All Methods]
|
| - The module can handle any HTTP request method, not just GET and POST.
|
| -\item[Redirects]
|
| - Automatically follows 3XX redirects on GETs.
|
| -\item[Compression]
|
| - Handles both 'deflate' and 'gzip' types of compression.
|
| -\item[Proxies]
|
| - If the Socksipy module is installed then httplib2 can handle sock4, sock5 and http proxies.
|
| -\item[Lost update support]
|
| - Automatically adds back ETags into PUT requests to resources we have already cached. This implements Section 3.2 of Detecting the Lost Update Problem Using Unreserved Checkout
|
| -\end{description}
|
| -
|
| -% ==== 3. ====
|
| -% List the public functions defined by the module. Begin with a
|
| -% standard phrase. You may also list the exceptions and other data
|
| -% items defined in the module, insofar as they are important for the
|
| -% user.
|
| -
|
| -The \module{httplib2} module defines the following variables:
|
| -% ---- 3.2. ----
|
| -% Data items are described using a ``datadesc'' block. This has only
|
| -% one parameter: the item's name.
|
| -
|
| -\begin{datadesc}{debuglevel}
|
| -The amount of debugging information to print. The default is 0.
|
| -\end{datadesc}
|
| -
|
| -\begin{datadesc}{RETRIES}
|
| -A request will be tried 'RETRIES' times if it fails at the socket/connection level.
|
| -The default is 2.
|
| -\end{datadesc}
|
| -
|
| -% --- 3.3. ---
|
| -% Exceptions are described using a ``excdesc'' block. This has only
|
| -% one parameter: the exception name. Exceptions defined as classes in
|
| -% the source code should be documented using this environment, but
|
| -% constructor parameters must be omitted.
|
| -
|
| -The \module{httplib2} module may raise the following Exceptions. Note that
|
| -there is an option that turns exceptions into
|
| -normal responses with an HTTP status code indicating
|
| -an error occured. See \member{Http.force_exception_to_status_code}
|
| -
|
| -\begin{excdesc}{HttpLib2Error}
|
| -The Base Exception for all exceptions raised by httplib2.
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{RedirectMissingLocation}
|
| -A 3xx redirect response code was provided but no Location: header
|
| -was provided to point to the new location.
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{RedirectLimit}
|
| -The maximum number of redirections was reached without coming to a final URI.
|
| -\end{excdesc}
|
| -
|
| -
|
| -\begin{excdesc}{ServerNotFoundError}
|
| -Unable to resolve the host name given.
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{RelativeURIError}
|
| -A relative, as opposed to an absolute URI, was passed into request().
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{FailedToDecompressContent}
|
| -The headers claimed that the content of the response was compressed but the
|
| -decompression algorithm applied to the content failed.
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{UnimplementedDigestAuthOptionError}
|
| -The server requested a type of Digest authentication that we
|
| -are unfamiliar with.
|
| -\end{excdesc}
|
| -
|
| -\begin{excdesc}{UnimplementedHmacDigestAuthOptionError}
|
| -The server requested a type of HMACDigest authentication that we
|
| -are unfamiliar with.
|
| -\end{excdesc}
|
| -
|
| -% ---- 3.4. ----
|
| -% Other standard environments:
|
| -%
|
| -% classdesc - Python classes; same arguments are funcdesc
|
| -% methoddesc - methods, like funcdesc but has an optional parameter
|
| -% to give the type name: \begin{methoddesc}[mytype]{name}{args}
|
| -% By default, the type name will be the name of the
|
| -% last class defined using classdesc. The type name
|
| -% is required if the type is implemented in C (because
|
| -% there's no classdesc) or if the class isn't directly
|
| -% documented (if it's private).
|
| -% memberdesc - data members, like datadesc, but with an optional
|
| -% type name like methoddesc.
|
| -
|
| -\begin{classdesc}{Http}{\optional{cache=None}, \optional{timeout=None}, \optional{proxy_info=None}}
|
| -The class that represents a client HTTP interface.
|
| -The \var{cache} parameter is either the name of a directory
|
| -to be used as a flat file cache, or it must an object that
|
| -implements the required caching interface.
|
| -The \var{timeout} parameter is the socket level timeout.
|
| -The \var{proxy_info} is an instance of \class{ProxyInfo} and is supplied
|
| -if a proxy is to be used. Note that the Socksipy module must be
|
| -installed for proxy support to work.
|
| -\end{classdesc}
|
| -
|
| -\begin{classdesc}{Response}{info}
|
| -Response is a subclass of \class{dict} and instances of this
|
| -class are returned from calls
|
| -to Http.request. The \var{info} parameter is either
|
| -an \class{rfc822.Message} or an \class{httplib.HTTPResponse} object.
|
| -\end{classdesc}
|
| -
|
| -\begin{classdesc}{FileCache}{dir_name, \optional{safe=safename}}
|
| -FileCache implements a Cache as a directory of files.
|
| -The \var{dir_name} parameter is
|
| -the name of the directory to use. If the directory does
|
| -not exist then FileCache attempts to create the directory.
|
| -The optional \var{safe} parameter is a funtion which generates
|
| -the cache filename for each URI. A FileCache object is
|
| -constructed and used for caching when you pass a directory name
|
| -into the constructor of \class{Http}.
|
| -\end{classdesc}
|
| -
|
| -\begin{classdesc}{ProxyInfo}{proxy_type, proxy_host, proxy_port, \optional{proxy_rdns=None}, \optional{proxy_user=None}, \optional{proxy_pass=None}}
|
| -The parameter \var{proxy_type} must be set to one of socks.PROXY_TYPE_XXX
|
| -constants. The \var{proxy_host} and \var{proxy_port} must be set to the location
|
| -of the proxy. The optional \var{proxy_rdns} should be set to True if
|
| -the DNS server on the proxy should be used. The \var{proxy_user} and
|
| -\var{proxy_pass} are supplied when the proxy is protected by authentication.
|
| -\end{classdesc}
|
| -
|
| -
|
| -% If your module defines new object types (for a built-in module) or
|
| -% classes (for a module written in Python), you should list the
|
| -% methods and instance variables (if any) of each type or class in a
|
| -% separate subsection.
|
| -
|
| -\subsection{Http Objects}
|
| -\label{http-objects}
|
| -% This label is generally useful for referencing this section, but is
|
| -% also used to give a filename when generating HTML.
|
| -
|
| -Http objects have the following methods:
|
| -
|
| -\begin{methoddesc}[Http]{request}{uri, \optional{method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None}}
|
| -Performs a single HTTP request.
|
| -The \var{uri} is the URI of the HTTP resource and can begin with either \code{http} or \code{https}. The value of \var{uri} must be an absolute URI.
|
| -
|
| -The \var{method} is the HTTP method to perform, such as \code{GET}, \code{POST}, \code{DELETE}, etc. There is no restriction
|
| -on the methods allowed.
|
| -
|
| -The \var{body} is the entity body to be sent with the request. It is a string
|
| -object.
|
| -
|
| -Any extra headers that are to be sent with the request should be provided in the
|
| -\var{headers} dictionary.
|
| -
|
| -The maximum number of redirect to follow before raising an exception is \var{redirections}. The default is 5.
|
| -
|
| -The \var{connection_type} is the type of connection object to use. The supplied class
|
| -should implement the interface of httplib.HTTPConnection.
|
| -
|
| -The return value is a tuple of (response, content), the first being and instance of the
|
| -\class{Response} class, the second being a string that contains the response entity body.
|
| -\end{methoddesc}
|
| -
|
| -\begin{methoddesc}[Http]{add_credentials}{name, password, \optional{domain=None}}
|
| -Adds a name and password that will be used when a request
|
| -requires authentication. Supplying the optional \var{domain} name will
|
| -restrict these credentials to only be sent to the specified
|
| -domain. If \var{domain} is not specified then the given credentials will
|
| -be used to try to satisfy every HTTP 401 challenge.
|
| -\end{methoddesc}
|
| -
|
| -\begin{methoddesc}[Http]{add_certificate}{key, cert, domain}
|
| -Add a \var{key} and \var{cert} that will be used for an SSL connection
|
| -to the specified domain. \var{keyfile} is the name of a PEM formatted
|
| -file that contains your private key. \var{certfile} is a PEM formatted certificate chain file.
|
| -\end{methoddesc}
|
| -
|
| -\begin{methoddesc}[Http]{clear_credentials}{}
|
| -Remove all the names and passwords used for authentication.
|
| -\end{methoddesc}
|
| -
|
| -\begin{memberdesc}[Http]{follow_redirects}
|
| -If \code{True}, which is the default, safe redirects are followed, where
|
| -safe means that the client is only doing a \code{GET} or \code{HEAD} on the
|
| -URI to which it is being redirected. If \code{False} then no redirects are followed.
|
| -Note that a False 'follow_redirects' takes precedence over a True 'follow_all_redirects'.
|
| -Another way of saying that is for 'follow_all_redirects' to have any affect, 'follow_redirects'
|
| -must be True.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Http]{forward_authorization_headers}
|
| -If \code{False}, which is the default, then Authorization: headers are
|
| -stripped from redirects. If \code{True} then Authorization: headers are left
|
| -in place when following redirects. This parameter only applies if following
|
| -redirects is turned on. Note that turning this on could cause your credentials
|
| -to leak, so carefully consider the consequences.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Http]{follow_all_redirects}
|
| -If \code{False}, which is the default, only safe redirects are followed, where
|
| -safe means that the client is only doing a \code{GET} or \code{HEAD} on the
|
| -URI to which it is being redirected. If \code{True} then all redirects are followed.
|
| -Note that a False 'follow_redirects' takes precedence over a True 'follow_all_redirects'.
|
| -Another way of saying that is for 'follow_all_redirects' to have any affect, 'follow_redirects'
|
| -must be True.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Http]{force_exception_to_status_code}
|
| -If \code{True}, which is the default, then no \module{httplib2} exceptions will be thrown. Instead,
|
| -those error conditions will be turned into \class{Response} objects
|
| -that will be returned normally.
|
| -
|
| -If \code{False}, then exceptions will be thrown.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Http]{ignore_etag}
|
| -Defaults to \code{False}. If \code{True}, then any etags present in the cached response
|
| -are ignored when processing the current request, i.e. httplib2 does \strong{not} use
|
| -'if-match' for PUT or 'if-none-match' when GET or HEAD requests are made. This
|
| -is mainly to deal with broken servers which supply an etag, but change it capriciously.
|
| -\end{memberdesc}
|
| -
|
| -\subsection{Cache Objects}
|
| -\label{cache-objects}
|
| -% This label is generally useful for referencing this section, but is
|
| -% also used to give a filename when generating HTML.
|
| -
|
| -If you wish to supply your own caching implementation
|
| -then you will need to pass in an object that supports the
|
| -following methods. Note that the \module{memcache} module
|
| -supports this interface natively.
|
| -
|
| -\begin{methoddesc}[Cache]{get}{key}
|
| -Takes a string \var{key} and returns the value as a string.
|
| -\end{methoddesc}
|
| -
|
| -\begin{methoddesc}[Cache]{set}{key, value}
|
| -Takes a string \var{key} and \var{value} and stores it in the cache.
|
| -\end{methoddesc}
|
| -
|
| -\begin{methoddesc}[Cache]{delete}{key}
|
| -Deletes the cached value stored at \var{key}. The value
|
| -of \var{key} is a string.
|
| -\end{methoddesc}
|
| -
|
| -
|
| -
|
| -
|
| -\subsection{Response Objects}
|
| -\label{response-objects}
|
| -% This label is generally useful for referencing this section, but is
|
| -% also used to give a filename when generating HTML.
|
| -
|
| -Response objects are derived from \class{dict} and map
|
| -header names (lower case with the trailing colon removed)
|
| -to header values. In addition to the dict methods
|
| -a Response object also has:
|
| -
|
| -\begin{memberdesc}[Response]{fromcache}
|
| -If \code{true} the the response was returned from the cache.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Response]{version}
|
| -The version of HTTP that the server supports. A value
|
| -of 11 means '1.1'.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Response]{status}
|
| -The numerical HTTP status code returned in the response.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Response]{reason}
|
| -The human readable component of the HTTP response status code.
|
| -\end{memberdesc}
|
| -
|
| -\begin{memberdesc}[Response]{previous}
|
| -If redirects are followed then the \class{Response} object returned
|
| -is just for the very last HTTP request and \var{previous} points to
|
| -the previous \class{Response} object. In this manner they form a chain
|
| -going back through the responses to the very first response.
|
| -Will be \code{None} if there are no previous respones.
|
| -\end{memberdesc}
|
| -
|
| -The Response object also populates the header \code{content-location}, that
|
| -contains the URI that was ultimately requested. This is useful if
|
| -redirects were encountered, you can determine the ultimate URI that
|
| -the request was sent to. All Response objects contain this key value,
|
| -including \code{previous} responses so you can determine the entire
|
| -chain of redirects. If \member{Http.force_exception_to_status_code} is \code{True}
|
| -and the number of redirects has exceeded the number of allowed number
|
| -of redirects then the \class{Response} object will report the error
|
| -in the status code, but the complete chain of previous responses will
|
| -still be in tact.
|
| -
|
| -
|
| -% ==== 4. ====
|
| -% Now is probably a good time for a complete example. (Alternatively,
|
| -% an example giving the flavor of the module may be given before the
|
| -% detailed list of functions.)
|
| -
|
| -\subsection{Examples \label{httplib2-example}}
|
| -
|
| -To do a simple \code{GET} request just supply the absolute URI
|
| -of the resource:
|
| -
|
| -\begin{verbatim}
|
| -import httplib2
|
| -h = httplib2.Http()
|
| -resp, content = h.request("http://bitworking.org/")
|
| -assert resp.status == 200
|
| -assert resp['content-type'] == 'text/html'
|
| -\end{verbatim}
|
| -
|
| -Here is more complex example that does a PUT
|
| -of some text to a resource that requires authentication.
|
| -The Http instance also uses a file cache
|
| -in the directory \code{.cache}.
|
| -
|
| -\begin{verbatim}
|
| -import httplib2
|
| -h = httplib2.Http(".cache")
|
| -h.add_credentials('name', 'password')
|
| -resp, content = h.request("https://example.org/chap/2",
|
| - "PUT", body="This is text",
|
| - headers={'content-type':'text/plain'} )
|
| -\end{verbatim}
|
| -
|
| -Here is an example that connects to a server that
|
| -supports the Atom Publishing Protocol.
|
| -
|
| -\begin{verbatim}
|
| -import httplib2
|
| -h = httplib2.Http()
|
| -h.add_credentials(myname, mypasswd)
|
| -h.follow_all_redirects = True
|
| -headers = {'Content-Type': 'application/atom+xml'}
|
| -body = """<?xml version="1.0" ?>
|
| - <entry xmlns="http://www.w3.org/2005/Atom">
|
| - <title>Atom-Powered Robots Run Amok</title>
|
| - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
|
| - <updated>2003-12-13T18:30:02Z</updated>
|
| - <author><name>John Doe</name></author>
|
| - <content>Some text.</content>
|
| -</entry>
|
| -"""
|
| -uri = "http://www.example.com/collection/"
|
| -resp, content = h.request(uri, "POST", body=body, headers=headers)
|
| -\end{verbatim}
|
| -% Note that there is no trailing ">>> " prompt shown.
|
| -
|
| -Here is an example of providing data to an HTML form processor.
|
| -In this case we presume this is a POST form. We need to take our
|
| -data and format it as "application/x-www-form-urlencoded" data and use that as a
|
| -body for a POST request.
|
| -
|
| -\begin{verbatim}
|
| ->>> import httplib2
|
| ->>> import urllib
|
| ->>> data = {'name': 'fred', 'address': '123 shady lane'}
|
| ->>> body = urllib.urlencode(data)
|
| ->>> body
|
| -'name=fred&address=123+shady+lane'
|
| ->>> h = httplib2.Http()
|
| ->>> resp, content = h.request("http://example.com", method="POST", body=body)
|
| -\end{verbatim}
|
| -% Note that there is no trailing ">>> " prompt shown.
|
| -
|
| -Here is an example of using a proxy server:
|
| -\begin{verbatim}
|
| -import httplib2
|
| -import socks
|
| -
|
| -httplib2.debuglevel=4
|
| -h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 8000))
|
| -r,c = h.request("http://bitworking.org/news/")
|
| -\end{verbatim}
|
| -
|
| -
|
| -
|
|
|