Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- #import json
- import demjson
- class BadJSON(Exception):
- def __init__(self, value):
- self.parameter = value
- def __str__(self):
- return repr(self.parameter)
- class BloggerClient(object):
- """ Client interface for Blogger API. """
- def __init__(self, key):
- self.key = key
- self.base = 'https://www.googleapis.com/blogger/v3'
- def _send_request(self, url, parameters={}):
- """ Sends an HTTP get request to Blogger API.
- Returns JSON decoded response. """
- url = '{base}{url}?'.format(base=self.base, url=url)
- parameters['key'] = self.key
- try:
- r = requests.get(url, params=parameters)
- print 'Connecting:', r.url, '\n' # debug
- except:
- print "** Could not reach url:\n", url
- return
- ascii_rtext = r.text.encode('ascii', 'ignore').decode('ascii')
- api_response = r'''{rtext}'''.format(rtext=ascii_rtext)
- #print api_response # debug
- return self._jload(api_response)
- def _jload(self, api_response):
- """ Accepts text API response. Returns JSON encoded response. """
- try:
- parsed = demjson.decode(api_response)
- except:
- print "** Could not decode JSON data\n"
- raise BadJSON('{}\nAbove JSON failed to load'.format(repr(api_response)))
- print repr(parsed) # debug
- return parsed
- def _is_200_response(self, parsed):
- """ Returns true if loaded JSON is 200 ok status. """
- pass
- def get_blog_id(self, blog_url):
- """ Makes an API request for blog info at blog url. Returns blog id. """
- api_url = '/blogs/byurl'
- kwargs = {'url': blog_url}
- blog = self._send_request(url=api_url, parameters=kwargs)
- return blog['id']
- def get_blog_info(self, blog_url):
- """ Makes an API request. Returns Blog item information.
- Required params: url, key. """
- api_url = '/blogs/byurl'
- kwargs = {'url': blog_url}
- blog_info = self._send_request(api_url, kwargs)
- return blog_info
- def get_posts(self, blog_id, **kwargs):
- """ Makes an API request. Returns list of posts from blog id. """
- api_url = '/blogs/{id}/posts'.format(id=blog_id)
- return self._send_request(api_url, kwargs)
- if __name__ == '__main__':
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement