1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
__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()
|