Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Side by Side Diff: experimental/webtry/server.py

Issue 228693002: Initial code for webtry, a web application for allowing users to try out Skia. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Don't add webtry to everything.gyp Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 import BaseHTTPServer
2 import base64
3 import json
4 import logging
5 import string
6 import subprocess
7
8 HOST_NAME = 'localhost'
9 PORT_NUMBER = 8765
10
11 def runCode(usercode):
12 f = open('template.cpp', 'rb')
13 template = string.Template(f.read())
14 f.close()
15
16 code = template.substitute(usercode=usercode)
17
18 f = open('result.cpp', 'wb')
19 f.write(code)
20 f.close()
21
22 msg = ""
23 img = ""
24 try:
25 logging.info("compiling")
26 msg = subprocess.check_output('ninja -C ../../out/Debug webtry'.split())
27 try:
28 logging.info("running")
29 msg = subprocess.check_output('../../out/Debug/webtry'.split())
30 f = open('foo.png', 'rb')
31 img = base64.b64encode(f.read())
32 f.close()
33 except subprocess.CalledProcessError as e:
34 logging.info(e)
35 msg = e.output
36 except subprocess.CalledProcessError as e:
37 logging.info(e)
38 msg = e.output
39
40 retval = {
41 'message': msg
42 }
43 if img:
44 retval['img'] = img
45 return retval
46
47 class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
48 def do_POST(self):
49 logging.info("POST")
50 body = ""
51 l = self.rfile.readline()
52 while l.strip() != "EOF":
53 body += l
54 l = self.rfile.readline()
55 self.send_response(200)
56 self.send_header("Content-type", "application/json")
57 self.end_headers()
58 resp = runCode(body)
59 self.wfile.write(json.dumps(resp))
60 self.end_headers()
61
62 def do_GET(self):
63 """Respond to a GET request."""
64 self.send_response(200)
65 self.send_header("Content-type", "text/html")
66 self.end_headers()
67 f = open('index.html', 'rb')
68 self.wfile.write(f.read())
69 f.close()
70
71 if __name__ == '__main__':
72 server_class = BaseHTTPServer.HTTPServer
73 httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
74 logging.info("Server Start: %s:%s" % (HOST_NAME, PORT_NUMBER))
75 try:
76 httpd.serve_forever()
77 except KeyboardInterrupt:
78 pass
79 httpd.server_close()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698