blob: 9f5cd7c6814bfd445ab4b2ac1c10bf5f198d1e9c [file] [log] [blame]
#!/usr/bin/env python
import json
import os.path
import random
import re
import sys
import urllib
import wsgiref.handlers
import wsgiref.simple_server
import webapp2
import tornado.template
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
loader = tornado.template.Loader('.')
class _BaseHandler(webapp2.RequestHandler):
def render(self, template, **kwargs):
d = dict()
d.update(kwargs)
self.response.write(loader.load(template).generate(**d))
class MainHandler(_BaseHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload')
self.render('index.html', upload_url=upload_url)
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads()
sys.stderr.write('upload: %r\n' % upload_files)
blob_info = upload_files[0]
self.redirect('/view/%s' % blob_info.key())
class ViewHandler(_BaseHandler):
def get(self, blobres):
blobres = str(urllib.unquote(blobres))
blob_info = blobstore.BlobInfo.get(blobres)
reader = blob_info.open()
total = 0
while 1:
d = reader.read(1024*1024)
total += len(d)
if not d: break
self.render('view.html', blob=blob_info, total=total)
settings = dict(
debug = 1,
)
wsgi_app = webapp2.WSGIApplication([
(r'/', MainHandler),
(r'/upload', UploadHandler),
(r'/view/([^/]+)$', ViewHandler),
], **settings)