__author__ = 'wiktorgworek@google.com (Wiktor Gworek)' import wsgiref.handlers import atom import os import cgi import gdata.blogger.service from oauth import OAuthDanceHandler, OAuthHandler, requiresOAuth from google.appengine.ext import webapp from google.appengine.ext.webapp import template class MainHandler(OAuthHandler): """Main handler. If user is not logged in via OAuth it will display welcome page. In other case user's blogs on Blogger will be displayed.""" def get(self): try: template_values = {'logged': self.client.has_access_token()} if template_values['logged']: feed = self.client.blogger.GetBlogFeed() blogs = [] for entry in feed.entry: blogs.append({ 'id': entry.GetBlogId(), 'title': entry.title.text, 'link': entry.GetHtmlLink().href, 'published': entry.published.text, 'updated': entry.updated.text }) template_values['blogs'] = blogs except gdata.service.RequestError, error: template_values['logged'] = False path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, template_values)) class NewPostHandler(OAuthHandler): """Handles AJAX POST request to create a new post on a blog.""" @requiresOAuth def post(self): entry = atom.Entry(content=atom.Content(text=self.request.get('body'))) self.client.blogger.AddPost(entry, blog_id=self.request.get('id')) def main(): application = webapp.WSGIApplication([ (r'/oauth/(.*)', OAuthDanceHandler), ('/new_post', NewPostHandler), ('/', MainHandler), ], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main()