サーバーでAPIのURLやアプリキー等を書いた設定ファイルと実行ファイルをZIPファイルに纏めてダウンロードさせます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# download.py 2011.3.7
import os
import logging
import urlparse
import random
import zipfile
import StringIO
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import login_required
from google.appengine.ext.webapp.util import run_wsgi_app
class download(webapp.RequestHandler):
@login_required
def get(self, filename):
output = StringIO.StringIO()
zip = zipfile.ZipFile(output, 'a')
user = users.get_current_user()
o = urlparse.urlparse(self.request.url)
api_url = "http://" + o.netloc + "/api"
appkey = "%08x" % random.randint(0x10000000, 0xffffffff)
template_values = {'appkey': appkey, 'user_id':user.user_id(), 'api_url': api_url}
path = os.path.join(os.path.dirname(__file__), "client", "client.ini")
zip.writestr("client.ini", template.render(path, template_values))
path = os.path.join(os.path.dirname(__file__), "client", "client.py")
zip.write(path, "client.py")
zip.close()
self.response.headers['Content-Type'] = "application/zip"
self.response.headers['Content-Disposition'] = 'attachment; filename="%s"' % filename
self.response.out.write(output.getvalue())
application = webapp.WSGIApplication([
('/download/(client.zip)', download),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
0 件のコメント:
コメントを投稿