Guest User

Untitled

a guest
May 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. from google.appengine.ext.webapp import WSGIApplication, RequestHandler
  2. from google.appengine.ext.webapp.util import run_wsgi_app
  3. from google.appengine.api.urlfetch import fetch
  4. from base64 import b64encode
  5. import re
  6.  
  7. def json_literal_escape(str):
  8. retval = ""
  9. for c in str:
  10. c = ord(c)
  11. if c == 34:
  12. retval += "\\\""
  13. elif c == 92:
  14. retval += "\\\\"
  15. elif c == 8:
  16. retval += "\\b";
  17. elif c == 9:
  18. retval += "\\t";
  19. elif c == 10:
  20. retval += "\\n";
  21. elif c == 11:
  22. retval += "\\v";
  23. elif c == 12:
  24. retval += "\\f";
  25. elif c == 13:
  26. retval += "\\r";
  27. elif c < 32:
  28. retval += "\\u%04x" % c;
  29. else:
  30. retval += unichr(c)
  31. return retval
  32.  
  33. def extract_mime_type(ct_header):
  34. return re.sub("\s*;.*", "", ct_header)
  35.  
  36. class Default(RequestHandler):
  37. def get(self):
  38. url = self.request.get("url")
  39. callback = self.request.get("callback")
  40. try:
  41. if callback == "":
  42. raise Exception("callback is not given")
  43. data = fetch(url, follow_redirects=True, deadline=2)
  44. self.response.headers["Content-Type"] = "text/javascript"
  45. self.response.out.write(u"%s({\"result\":\"%s\"})" % (
  46. callback,
  47. json_literal_escape(
  48. u"data:%s;base64,%s" % (
  49. extract_mime_type(data.headers["Content-Type"]),
  50. b64encode(data.content)))))
  51. except Exception, e:
  52. self.response.set_status(500)
  53. self.response.headers["Content-Type"] = "text/plain"
  54. self.response.out.write(u"error: " + str(e))
  55.  
  56.  
  57. if __name__ == "__main__":
  58. run_wsgi_app(WSGIApplication([("/", Default)]))
Add Comment
Please, Sign In to add comment