Example #1
0
    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
Example #4
0
    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