110 lines
4.6 KiB
Python
110 lines
4.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (c) 2007 Benoit Chesneau <benoitc@metavers.net>
|
|
#
|
|
# Permission to use, copy, modify, and distribute this software for any
|
|
# purpose with or without fee is hereby granted, provided that the above
|
|
# copyright notice and this permission notice appear in all copies.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
|
|
"""CodesearchService extends GDataService to streamline Google Codesearch
|
|
operations"""
|
|
|
|
|
|
__author__ = 'Benoit Chesneau'
|
|
|
|
|
|
import atom
|
|
import gdata.service
|
|
import gdata.codesearch
|
|
|
|
|
|
class CodesearchService(gdata.service.GDataService):
|
|
"""Client extension for Google codesearch service"""
|
|
|
|
def __init__(self, email=None, password=None, source=None,
|
|
server='www.google.com', additional_headers=None, **kwargs):
|
|
"""Creates a client for the Google codesearch service.
|
|
|
|
Args:
|
|
email: string (optional) The user's email address, used for
|
|
authentication.
|
|
password: string (optional) The user's password.
|
|
source: string (optional) The name of the user's application.
|
|
server: string (optional) The name of the server to which a connection
|
|
will be opened. Default value: 'www.google.com'.
|
|
**kwargs: The other parameters to pass to gdata.service.GDataService
|
|
constructor.
|
|
"""
|
|
gdata.service.GDataService.__init__(
|
|
self, email=email, password=password, service='codesearch',
|
|
source=source, server=server, additional_headers=additional_headers,
|
|
**kwargs)
|
|
|
|
def Query(self, uri, converter=gdata.codesearch.CodesearchFeedFromString):
|
|
"""Queries the Codesearch feed and returns the resulting feed of
|
|
entries.
|
|
|
|
Args:
|
|
uri: string The full URI to be queried. This can contain query
|
|
parameters, a hostname, or simply the relative path to a Document
|
|
List feed. The DocumentQuery object is useful when constructing
|
|
query parameters.
|
|
converter: func (optional) A function which will be executed on the
|
|
retrieved item, generally to render it into a Python object.
|
|
By default the CodesearchFeedFromString function is used to
|
|
return a CodesearchFeed object. This is because most feed
|
|
queries will result in a feed and not a single entry.
|
|
|
|
Returns :
|
|
A CodesearchFeed objects representing the feed returned by the server
|
|
"""
|
|
return self.Get(uri, converter=converter)
|
|
|
|
def GetSnippetsFeed(self, text_query=None):
|
|
"""Retrieve Codesearch feed for a keyword
|
|
|
|
Args:
|
|
text_query : string (optional) The contents of the q query parameter. This
|
|
string is URL escaped upon conversion to a URI.
|
|
Returns:
|
|
A CodesearchFeed objects representing the feed returned by the server
|
|
"""
|
|
|
|
query=gdata.codesearch.service.CodesearchQuery(text_query=text_query)
|
|
feed = self.Query(query.ToUri())
|
|
return feed
|
|
|
|
|
|
class CodesearchQuery(gdata.service.Query):
|
|
"""Object used to construct the query to the Google Codesearch feed. here only as a shorcut"""
|
|
|
|
def __init__(self, feed='/codesearch/feeds/search', text_query=None,
|
|
params=None, categories=None):
|
|
"""Constructor for Codesearch Query.
|
|
|
|
Args:
|
|
feed: string (optional) The path for the feed. (e.g. '/codesearch/feeds/search')
|
|
text_query: string (optional) The contents of the q query parameter. This
|
|
string is URL escaped upon conversion to a URI.
|
|
params: dict (optional) Parameter value string pairs which become URL
|
|
params when translated to a URI. These parameters are added to
|
|
the query's items.
|
|
categories: list (optional) List of category strings which should be
|
|
included as query categories. See gdata.service.Query for
|
|
additional documentation.
|
|
|
|
Yelds:
|
|
A CodesearchQuery object to construct a URI based on Codesearch feed
|
|
"""
|
|
|
|
gdata.service.Query.__init__(self, feed, text_query, params, categories)
|