def post(self): api_key = self.get_argument('apiKey') app_db = account.get_db_for_api_key(api_key) if app_db is None: raise HTTPError(400, 'Invalid API Key') # app = self.get_argument('appName') version = self.get_argument('version') try: version_code = int(self.get_argument('versionCode', -1)) except ValueError as e: version_code = -1 now = datetime.datetime.utcnow() try: crashtime = datetime.datetime.utcfromtimestamp( int(self.get_argument('crashtime', None)) / 1000.0) except (ValueError, TypeError): crashtime = now try: uploadtime = datetime.datetime.utcfromtimestamp( int(self.get_argument('uploadtime', None)) / 1000.0) except (ValueError, TypeError): uploadtime = now try: extras_string = self.get_argument('extras', '{}') extras = json.loads(extras_string) except (ValueError, TypeError): extras_string = '{}' extras = {} # adjust crash time crashtime = now - (uploadtime - crashtime) f = self.request.files.get('minidump', None) if f is None or len(f) == 0: raise HTTPError(400, 'No file found') filename = f[0]['filename'] save_minidump(app_db, filename, f[0]['body']) conn = crashes_db.connect() conn.execute("SET search_path TO %s", (app_db, )) conn.execute(crashes.insert(), version=version, version_code=version_code, crash=filename, crashtime=crashtime, extras=extras_string, uploadtime=now) conn.execute("SET search_path TO 'public'") conn.close() breakpad_decode.delay(filename, app_db, version) self.write(filename) return
def post(self): api_key = self.get_argument("apiKey") app_db = account.get_db_for_api_key(api_key) if app_db is None: raise HTTPError(400, "Invalid API Key") # app = self.get_argument('appName') version = self.get_argument("version") try: version_code = int(self.get_argument("versionCode", -1)) except ValueError as e: version_code = -1 now = datetime.datetime.utcnow() try: crashtime = datetime.datetime.utcfromtimestamp(int(self.get_argument("crashtime", None)) / 1000.0) except (ValueError, TypeError): crashtime = now try: uploadtime = datetime.datetime.utcfromtimestamp(int(self.get_argument("uploadtime", None)) / 1000.0) except (ValueError, TypeError): uploadtime = now try: extras_string = self.get_argument("extras", "{}") extras = json.loads(extras_string) except (ValueError, TypeError): extras_string = "{}" extras = {} # adjust crash time crashtime = now - (uploadtime - crashtime) f = self.request.files.get("minidump", None) if f is None or len(f) == 0: raise HTTPError(400, "No file found") filename = f[0]["filename"] save_minidump(app_db, filename, f[0]["body"]) conn = crashes_db.connect() conn.execute("SET search_path TO %s", (app_db,)) conn.execute( crashes.insert(), version=version, version_code=version_code, crash=filename, crashtime=crashtime, extras=extras_string, uploadtime=now, ) conn.execute("SET search_path TO 'public'") conn.close() breakpad_decode.delay(filename, app_db, version) self.write(filename) return
def post(self): api_key = self.get_argument("api_key") crash_id = self.get_argument("crash") app_db = account.get_db_for_api_key(api_key) if app_db is None: raise HTTPError(403, "Invalid API Key") conn = crashes_db.connect() conn.execute("SET search_path TO %s", (app_db,)) result = conn.execute(select([crashes.c.version, crashes.c.version_code], crashes.c.crash == crash_id)) row = result.fetchone() conn.execute("SET search_path TO 'public'") conn.close() if row is None: raise HTTPError(404) version = row[0] breakpad_decode.delay(crash_id, app_db, version) self.write("0") return
def post(self): api_key = self.get_argument('api_key') crash_id = self.get_argument('crash') app_db = account.get_db_for_api_key(api_key) if app_db is None: raise HTTPError(403, 'Invalid API Key') conn = crashes_db.connect() conn.execute("SET search_path TO %s", (app_db, )) result = conn.execute( select([crashes.c.version, crashes.c.version_code], crashes.c.crash == crash_id)) row = result.fetchone() conn.execute("SET search_path TO 'public'") conn.close() if row is None: raise HTTPError(404) version = row[0] breakpad_decode.delay(crash_id, app_db, version) self.write('0') return