atom.service
index
/usr/local/svn/gdata-python-client/src/atom/service.py

AtomService provides CRUD ops. in line with the Atom Publishing Protocol.
 
AtomService: Encapsulates the ability to perform insert, update and delete
             operations with the Atom Publishing Protocol on which GData is
             based. An instance can perform query, insertion, deletion, and
             update.
 
HttpRequest: Function that performs a GET, POST, PUT, or DELETE HTTP request
     to the specified end point. An AtomService object or a subclass can be
     used to specify information about the request.

 
Modules
       
xml.etree.cElementTree
atom
base64
httplib
os
re
socket
urllib
warnings

 
Classes
       
__builtin__.object
AtomService
atom.http_interface.GenericToken(__builtin__.object)
BasicAuthToken

 
class AtomService(__builtin__.object)
    Performs Atom Publishing Protocol CRUD operations.
 
The AtomService contains methods to perform HTTP CRUD operations.
 
  Methods defined here:
Delete(self, uri, extra_headers=None, url_params=None, escape_params=True)
Deletes the entry at the given URI.
 
Args:
  uri: string The URI of the entry to be deleted. Example: 
       '/base/feeds/items/ITEM-ID'
  extra_headers: dict (optional) HTTP headers which are to be included.
                 The client automatically sets the Content-Type and
                 Authorization headers.
  url_params: dict (optional) Additional URL parameters to be included
              in the URI. These are translated into query arguments
              in the form '&dict_key=value&...'.
              Example: {'max-results': '250'} becomes &max-results=250
  escape_params: boolean (optional) If false, the calling code has already
                 ensured that the query will form a valid URL (all
                 reserved characters have been escaped). If true, this
                 method will escape the query and any URL parameters
                 provided.
 
Returns:
  httplib.HTTPResponse Server's response to the DELETE request.
Get(self, uri, extra_headers=None, url_params=None, escape_params=True)
Query the APP server with the given URI
 
The uri is the portion of the URI after the server value 
(server example: 'www.google.com').
 
Example use:
To perform a query against Google Base, set the server to 
'base.google.com' and set the uri to '/base/feeds/...', where ... is 
your query. For example, to find snippets for all digital cameras uri 
should be set to: '/base/feeds/snippets?bq=digital+camera'
 
Args:
  uri: string The query in the form of a URI. Example:
       '/base/feeds/snippets?bq=digital+camera'.
  extra_headers: dicty (optional) Extra HTTP headers to be included
                 in the GET request. These headers are in addition to 
                 those stored in the client's additional_headers property.
                 The client automatically sets the Content-Type and 
                 Authorization headers.
  url_params: dict (optional) Additional URL parameters to be included
              in the query. These are translated into query arguments
              in the form '&dict_key=value&...'.
              Example: {'max-results': '250'} becomes &max-results=250
  escape_params: boolean (optional) If false, the calling code has already
                 ensured that the query will form a valid URL (all
                 reserved characters have been escaped). If true, this
                 method will escape the query and any URL parameters
                 provided.
 
Returns:
  httplib.HTTPResponse The server's response to the GET request.
Post(self, data, uri, extra_headers=None, url_params=None, escape_params=True, content_type='application/atom+xml')
Insert data into an APP server at the given URI.
 
Args:
  data: string, ElementTree._Element, or something with a __str__ method 
        The XML to be sent to the uri. 
  uri: string The location (feed) to which the data should be inserted. 
       Example: '/base/feeds/items'. 
  extra_headers: dict (optional) HTTP headers which are to be included. 
                 The client automatically sets the Content-Type,
                 Authorization, and Content-Length headers.
  url_params: dict (optional) Additional URL parameters to be included
              in the URI. These are translated into query arguments
              in the form '&dict_key=value&...'.
              Example: {'max-results': '250'} becomes &max-results=250
  escape_params: boolean (optional) If false, the calling code has already
                 ensured that the query will form a valid URL (all
                 reserved characters have been escaped). If true, this
                 method will escape the query and any URL parameters
                 provided.
 
Returns:
  httplib.HTTPResponse Server's response to the POST request.
Put(self, data, uri, extra_headers=None, url_params=None, escape_params=True, content_type='application/atom+xml')
Updates an entry at the given URI.
 
Args:
  data: string, ElementTree._Element, or xml_wrapper.ElementWrapper The 
        XML containing the updated data.
  uri: string A URI indicating entry to which the update will be applied.
       Example: '/base/feeds/items/ITEM-ID'
  extra_headers: dict (optional) HTTP headers which are to be included.
                 The client automatically sets the Content-Type,
                 Authorization, and Content-Length headers.
  url_params: dict (optional) Additional URL parameters to be included
              in the URI. These are translated into query arguments
              in the form '&dict_key=value&...'.
              Example: {'max-results': '250'} becomes &max-results=250
  escape_params: boolean (optional) If false, the calling code has already
                 ensured that the query will form a valid URL (all
                 reserved characters have been escaped). If true, this
                 method will escape the query and any URL parameters
                 provided.
 
Returns:
  httplib.HTTPResponse Server's response to the PUT request.
UseBasicAuth(self, username, password, for_proxy=False)
Sets an Authenticaiton: Basic HTTP header containing plaintext.
 
Deprecated, use use_basic_auth instead.
 
The username and password are base64 encoded and added to an HTTP header
which will be included in each request. Note that your username and 
password are sent in plaintext.
 
Args:
  username: str
  password: str
__init__(*args, **kwargs)
# The deprecated_function wraps the actual call to f.
request(*args, **kwargs)
# The deprecated_function wraps the actual call to f.
use_basic_auth(self, username, password, scopes=None)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
debug
If True, HTTP debug information is printed.
override_token

Data and other attributes defined here:
auto_set_current_token = True
auto_store_tokens = True
current_token = None
port = 80
ssl = False

 
class BasicAuthToken(atom.http_interface.GenericToken)
    
Method resolution order:
BasicAuthToken
atom.http_interface.GenericToken
__builtin__.object

Methods defined here:
__init__(self, auth_header, scopes=None)
Creates a token used to add Basic Auth headers to HTTP requests.
 
Args:
  auth_header: str The value for the Authorization header.
  scopes: list of str or atom.url.Url specifying the beginnings of URLs
      for which this token can be used. For example, if scopes contains
      'http://example.com/foo', then this token can be used for a request to
      'http://example.com/foo/bar' but it cannot be used for a request to
      'http://example.com/baz'
__str__(self)
perform_request(self, http_client, operation, url, data=None, headers=None)
Sets the Authorization header to the basic auth string.
valid_for_scope(self, url)
Tells the caller if the token authorizes access to the desired URL.

Data descriptors inherited from atom.http_interface.GenericToken:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
BuildUri(uri, url_params=None, escape_params=True)
Converts a uri string and a collection of parameters into a URI.
 
This function is deprcated, use atom.url.Url instead.
 
Args:
  uri: string
  url_params: dict (optional)
  escape_params: boolean (optional)
  uri: string The start of the desired URI. This string can alrady contain
       URL parameters. Examples: '/base/feeds/snippets', 
       '/base/feeds/snippets?bq=digital+camera'
  url_parameters: dict (optional) Additional URL parameters to be included
                  in the query. These are translated into query arguments
                  in the form '&dict_key=value&...'.
                  Example: {'max-results': '250'} becomes &max-results=250
  escape_params: boolean (optional) If false, the calling code has already
                 ensured that the query will form a valid URL (all
                 reserved characters have been escaped). If true, this
                 method will escape the query and any URL parameters
                 provided.
 
Returns:
  string The URI consisting of the escaped URL parameters appended to the
  initial uri string.
CalculateDataLength(data)
Attempts to determine the length of the data to send. 
 
This method will respond with a length only if the data is a string or
and ElementTree element.
 
Args:
  data: object If this is not a string or ElementTree element this funtion
      will return None.
DictionaryToParamList(url_parameters, escape_params=True)
Convert a dictionary of URL arguments into a URL parameter string.
 
This function is deprcated, use atom.url.Url instead.
 
Args:
  url_parameters: The dictionaty of key-value pairs which will be converted
                  into URL parameters. For example,
                  {'dry-run': 'true', 'foo': 'bar'}
                  will become ['dry-run=true', 'foo=bar'].
 
Returns:
  A list which contains a string for each key-value pair. The strings are
  ready to be incorporated into a URL by using '&'.join([] + parameter_list)
HttpRequest(service, operation, data, uri, extra_headers=None, url_params=None, escape_params=True, content_type='application/atom+xml')
Performs an HTTP call to the server, supports GET, POST, PUT, and DELETE.
 
This method is deprecated, use atom.http.HttpClient.request instead.
 
Usage example, perform and HTTP GET on http://www.google.com/:
  import atom.service
  client = atom.service.AtomService()
  http_response = client.Get('http://www.google.com/')
or you could set the client.server to 'www.google.com' and use the 
following:
  client.server = 'www.google.com'
  http_response = client.Get('/')
 
Args:
  service: atom.AtomService object which contains some of the parameters 
      needed to make the request. The following members are used to 
      construct the HTTP call: server (str), additional_headers (dict), 
      port (int), and ssl (bool).
  operation: str The HTTP operation to be performed. This is usually one of
      'GET', 'POST', 'PUT', or 'DELETE'
  data: ElementTree, filestream, list of parts, or other object which can be 
      converted to a string. 
      Should be set to None when performing a GET or PUT.
      If data is a file-like object which can be read, this method will read
      a chunk of 100K bytes at a time and send them. 
      If the data is a list of parts to be sent, each part will be evaluated
      and sent.
  uri: The beginning of the URL to which the request should be sent. 
      Examples: '/', '/base/feeds/snippets', 
      '/m8/feeds/contacts/default/base'
  extra_headers: dict of strings. HTTP headers which should be sent
      in the request. These headers are in addition to those stored in 
      service.additional_headers.
  url_params: dict of strings. Key value pairs to be added to the URL as
      URL parameters. For example {'foo':'bar', 'test':'param'} will 
      become ?foo=bar&test=param.
  escape_params: bool default True. If true, the keys and values in 
      url_params will be URL escaped when the form is constructed 
      (Special characters converted to %XX form.)
  content_type: str The MIME type for the data being sent. Defaults to
      'application/atom+xml', this is only used if data is set.
PrepareConnection(service, full_uri)
Opens a connection to the server based on the full URI.
 
This method is deprecated, instead use atom.http.HttpClient.request.
 
Examines the target URI and the proxy settings, which are set as
environment variables, to open a connection with the server. This
connection is used to make an HTTP request.
 
Args:
  service: atom.AtomService or a subclass. It must have a server string which
    represents the server host to which the request should be made. It may also
    have a dictionary of additional_headers to send in the HTTP request.
  full_uri: str Which is the target relative (lacks protocol and host) or
  absolute URL to be opened. Example:
  'https://www.google.com/accounts/ClientLogin' or
  'base/feeds/snippets' where the server is set to www.google.com.
 
Returns:
  A tuple containing the httplib.HTTPConnection and the full_uri for the
  request.
ProcessUrl(service, url, for_proxy=False)
Processes a passed URL.  If the URL does not begin with https?, then
the default value for server is used
 
This method is deprecated, use atom.url.parse_url instead.
UseBasicAuth(service, username, password, for_proxy=False)
Sets an Authenticaiton: Basic HTTP header containing plaintext.
 
Deprecated, use AtomService.use_basic_auth insread.
 
The username and password are base64 encoded and added to an HTTP header
which will be included in each request. Note that your username and 
password are sent in plaintext. The auth header is added to the 
additional_headers dictionary in the service object.
 
Args:
  service: atom.AtomService or a subclass which has an 
      additional_headers dict as a member.
  username: str
  password: str
deprecation(message)

 
Data
        __author__ = 'api.jscudder (Jeff Scudder)'

 
Author
        api.jscudder (Jeff Scudder)