/google_app/versionhandler.py

https://code.google.com/p/dwarftherapist/ · Python · 32 lines · 27 code · 4 blank · 1 comment · 1 complexity · a2b0f44847b34492a8c9dcdad8873556 MD5 · raw file

  1. import logging
  2. import pprint
  3. import re
  4. from google.appengine.ext import webapp
  5. from metricentry import MetricEntry
  6. from utils import ip_info
  7. CURRENT_VERSION = "0.6.12"
  8. RX_VERSION_CHUNKER = re.compile(r"\s*DwarfTherapist\s+(\d+)\.(\d+)\.(\d+)\s*")
  9. class VersionHandler(webapp.RequestHandler):
  10. def get(self, *args):
  11. info = ip_info(self.request.remote_addr)
  12. entry = MetricEntry.get_or_insert("ip_%s" % self.request.remote_addr)
  13. entry.ip = self.request.remote_addr
  14. entry.city = info['city']
  15. entry.country = info['country']
  16. entry.region_name = info['region_name']
  17. entry.region_code = info['region_code']
  18. entry.dt_version_string = self.request.headers["User-Agent"]
  19. #logging.info("user-agent: %s" % self.request.headers["User-Agent"])
  20. m = re.match(RX_VERSION_CHUNKER, self.request.headers["User-Agent"])
  21. if m:
  22. print "MATCH GROUPS", m.groups()
  23. entry.dt_version_major = int(m.group(1))
  24. entry.dt_version_minor = int(m.group(2))
  25. entry.dt_version_patch = int(m.group(3))
  26. entry.put()
  27. self.response.headers['Content-Type'] = 'text/plain'
  28. self.response.out.write(CURRENT_VERSION);