| Index: examples/games/scummvm/nacl-scumm/AppEngineMount.py
|
| diff --git a/examples/games/scummvm/nacl-scumm/AppEngineMount.py b/examples/games/scummvm/nacl-scumm/AppEngineMount.py
|
| deleted file mode 100644
|
| index d9fb467ec2cde5c79b5c92a4b21985ea2f357b6f..0000000000000000000000000000000000000000
|
| --- a/examples/games/scummvm/nacl-scumm/AppEngineMount.py
|
| +++ /dev/null
|
| @@ -1,151 +0,0 @@
|
| -"""
|
| -Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| -Use of this source code is governed by a BSD-style license that can be
|
| -found in the LICENSE file.
|
| -"""
|
| -
|
| -import cgi
|
| -import datetime
|
| -import urllib
|
| -import wsgiref.handlers
|
| -import os
|
| -import logging
|
| -
|
| -from google.appengine.ext import db
|
| -from google.appengine.api import users
|
| -from google.appengine.ext import webapp
|
| -from google.appengine.ext.webapp.util import run_wsgi_app
|
| -from google.appengine.ext.webapp import template
|
| -from google.appengine.ext.webapp import Request
|
| -from google.appengine.ext.db import Key
|
| -
|
| -
|
| -"""
|
| -This script is an example server backend for use with the App Engine
|
| -mount type in nacl-mounts.
|
| -"""
|
| -
|
| -
|
| -class File(db.Model):
|
| - owner = db.UserProperty()
|
| - filename = db.StringProperty()
|
| - data = db.BlobProperty()
|
| -
|
| -
|
| -class MainPage(webapp.RequestHandler):
|
| - def get(self):
|
| - # Require the user to login.
|
| - user = users.get_current_user()
|
| - if not user:
|
| - self.redirect(users.create_login_url(self.request.uri))
|
| - return
|
| -
|
| - template_values = {
|
| - }
|
| - path = os.path.join(os.path.dirname(__file__), 'index.html')
|
| - self.response.out.write(template.render(path, template_values))
|
| -
|
| -
|
| -def FileKey(filename, user):
|
| - if not user:
|
| - u_id = -1
|
| - else:
|
| - u_id = user.user_id()
|
| - return Key.from_path('File', '%s_%s' % (filename, u_id))
|
| -
|
| -
|
| -class FileHandlingPage(webapp.RequestHandler):
|
| - def post(self):
|
| - user = users.get_current_user()
|
| -
|
| - split = self.request.path.rsplit('/', 1)
|
| - assert (len(split) > 1)
|
| - method = split[1]
|
| -
|
| - self.response.headers['Content-Type'] = 'application/octet-stream'
|
| -
|
| - if method == 'read':
|
| - filename = self.request.get(u'filename')
|
| - assert filename
|
| - k = FileKey(filename, user)
|
| - f = File.get(k)
|
| - if f:
|
| - self.response.out.write(f.data)
|
| - self.response.out.write('1')
|
| - else:
|
| - self.response.out.write('0')
|
| -
|
| - elif method == 'write':
|
| - self.response.out.write('1')
|
| - data = self.request.get(u'data')
|
| - filename = self.request.get(u'filename')
|
| - assert filename
|
| - assert data
|
| - def create_or_update(filename, data, owner):
|
| - k = FileKey(filename, user)
|
| - f = File.get(k)
|
| - if not f:
|
| - f = File(key=k)
|
| - f.owner = owner
|
| - f.filename = filename
|
| - f.data = data
|
| - return f
|
| -
|
| - f = db.run_in_transaction(create_or_update, filename, data, user)
|
| -
|
| - def db_put(file):
|
| - f.put()
|
| -
|
| - db.run_in_transaction(db_put, f)
|
| -
|
| - elif method == 'list':
|
| - prefix = self.request.get(u'prefix')
|
| - assert prefix
|
| - # First make sure that the file is there
|
| - k = FileKey(prefix, user)
|
| - f = File.get(k)
|
| - if not f:
|
| - return
|
| - q = File.all()
|
| - q.filter('owner =', user)
|
| - q.filter('filename >', prefix)
|
| - q.filter('filename <', prefix + u'ffff')
|
| - prefixslash = prefix
|
| - if prefixslash[-1] != '/':
|
| - prefixslash += '/'
|
| - depth = len(prefixslash.split('/'))
|
| - results = q.fetch(limit=100)
|
| - for r in results:
|
| - # make sure the file is directly under prefixslash
|
| - if len(r.filename.split('/')) != depth:
|
| - continue
|
| - self.response.out.write('%s\n' % r.filename)
|
| -
|
| - elif method == 'remove':
|
| - filename = self.request.get(u'filename')
|
| - assert filename
|
| - k = FileKey(filename, user)
|
| - try:
|
| - db.delete(k)
|
| - self.response.out.write('1')
|
| - except:
|
| - self.response.out.write('0')
|
| - return
|
| -
|
| - else:
|
| - assert False
|
| -
|
| -
|
| -application = webapp.WSGIApplication([
|
| - ('/', MainPage),
|
| - ('/_file/.*', FileHandlingPage),
|
| -
|
| -], debug=True)
|
| -
|
| -
|
| -def main():
|
| - run_wsgi_app(application)
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - main()
|
|
|