def process_archive(self, fname, from_db=False): tmp = tempfile.mkdtemp() path = os.path.join(tmp, 'curation') subprocess.check_call(['bin/7za', 'x', f'-o{path}', fname], stdout=subprocess.DEVNULL) entries = os.listdir(path) if len(entries) == 1: # must be root folder uid = entries[0] if not util.validate_uuid(uid): pcolor( 'red', f'\nError: Root folder in {fname} not a valid UUID. Skipped.' ) return path = os.path.join(path, uid) else: uid, _ = os.path.splitext(os.path.basename(fname)) if not util.validate_uuid(uid): pcolor( 'red', f'\nError: No root folder in {fname} and archive filename not a valid UUID. Skipped.' ) return if util.is_gamezip(entries): path = os.path.join(path, 'content') try: self.process_game_from_path(uid, path, from_db) finally: shutil.rmtree(tmp)
def activity_state_delete(req_dict): rogueparams = set(req_dict['params']) - set(["activityId", "agent", "stateId", "registration"]) if rogueparams: raise ParamError("The delete activity state request contained unexpected parameters: %s" % ", ".join(rogueparams)) try: req_dict['params']['activityId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but activityId parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if not 'activity_state_agent_validated' in req_dict: try: req_dict['params']['agent'] except KeyError: err_msg = "Error -- activity_state - method = %s, but agent parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if 'params' in req_dict and 'registration' in req_dict['params']: if not validate_uuid(req_dict['params']['registration']): raise ParamError("%s is not a valid uuid for the registration parameter") # Extra validation if oauth if req_dict['auth']['type'] == 'oauth': validate_oauth_state_or_profile_agent(req_dict, "state") return req_dict
def activity_state_put(req_dict): rogueparams = set(req_dict['params']) - set(["activityId", "agent", "stateId", "registration"]) if rogueparams: raise ParamError("The put activity state request contained unexpected parameters: %s" % ", ".join(rogueparams)) validator = StatementValidator() if 'activityId' in req_dict['params']: validator.validate_uri(req_dict['params']['activityId'], "activityId param for activity state") else: err_msg = "Error -- activity_state - method = %s, but activityId parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if not 'stateId' in req_dict['params']: err_msg = "Error -- activity_state - method = %s, but stateId parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if 'registration' in req_dict['params']: if not validate_uuid(req_dict['params']['registration']): raise ParamError("%s is not a valid uuid for the registration parameter") if 'agent' in req_dict['params']: try: agent = json.loads(req_dict['params']['agent']) except Exception, e: raise ParamError("agent param for activity state is not valid") validator.validate_agent(agent, "Activity state agent param")
def activity_state_delete(req_dict): rogueparams = set(req_dict['params']) - set( ["activityId", "agent", "stateId", "registration"]) if rogueparams: raise ParamError( "The delete activity state request contained unexpected parameters: %s" % ", ".join(rogueparams)) try: req_dict['params']['activityId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but activityId parameter is missing.." % req_dict[ 'method'] raise ParamError(err_msg) if not 'activity_state_agent_validated' in req_dict: try: req_dict['params']['agent'] except KeyError: err_msg = "Error -- activity_state - method = %s, but agent parameter is missing.." % req_dict[ 'method'] raise ParamError(err_msg) if 'params' in req_dict and 'registration' in req_dict['params']: if not validate_uuid(req_dict['params']['registration']): raise ParamError( "%s is not a valid uuid for the registration parameter") # Extra validation if oauth if req_dict['auth']['type'] == 'oauth': validate_oauth_state_or_profile_agent(req_dict, "state") return req_dict
def activity_state_post(req_dict): rogueparams = set(req_dict['params']) - set( ["activityId", "agent", "stateId", "registration"]) if rogueparams: raise ParamError( "The post activity state request contained unexpected parameters: %s" % ", ".join(rogueparams)) try: req_dict['params']['activityId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but activityId parameter is missing.." % req_dict[ 'method'] raise ParamError(err_msg) if not 'activity_state_agent_validated' in req_dict: try: req_dict['params']['agent'] except KeyError: err_msg = "Error -- activity_state - method = %s, but agent parameter is missing.." % req_dict[ 'method'] raise ParamError(err_msg) try: req_dict['params']['stateId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but stateId parameter is missing.." % req_dict[ 'method'] raise ParamError(err_msg) if 'params' in req_dict and 'registration' in req_dict['params']: if not validate_uuid(req_dict['params']['registration']): raise ParamError( "%s is not a valid uuid for the registration parameter") if 'headers' not in req_dict or ( 'CONTENT_TYPE' not in req_dict['headers'] or req_dict['headers']['CONTENT_TYPE'] != "application/json"): err_msg = "The content type for activity state POSTs must be application/json" raise ParamError(err_msg) # Must have body included for state if 'body' not in req_dict: err_msg = "Could not find the state" raise ParamError(err_msg) # Extra validation if oauth if req_dict['auth']['type'] == 'oauth': validate_oauth_state_or_profile_agent(req_dict, "state") # Set state req_dict['state'] = req_dict.pop('raw_body', req_dict.pop('body', None)) return req_dict
def process_auto(self, path, from_db=False): kind = 'Content' if from_db else 'Curation' fname = os.path.basename(path) exts = self.settings['archive_extensions'].split(',') ext = util.extension(fname, exts) if os.path.isfile(path) and ext: print(f'{kind} archive ({ext}): {fname}'.ljust(80), end='', flush=True) self.process_archive(path, from_db) return if not os.path.isdir(path): return if not util.validate_uuid(fname): return print(f'{kind} folder: {fname}'.ljust(80), end='', flush=True) self.process_game_from_path(fname, path, from_db)
def activity_state_post(req_dict): rogueparams = set(req_dict['params']) - set(["activityId", "agent", "stateId", "registration"]) if rogueparams: raise ParamError("The post activity state request contained unexpected parameters: %s" % ", ".join(rogueparams)) try: req_dict['params']['activityId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but activityId parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if not 'activity_state_agent_validated' in req_dict: try: req_dict['params']['agent'] except KeyError: err_msg = "Error -- activity_state - method = %s, but agent parameter is missing.." % req_dict['method'] raise ParamError(err_msg) try: req_dict['params']['stateId'] except KeyError: err_msg = "Error -- activity_state - method = %s, but stateId parameter is missing.." % req_dict['method'] raise ParamError(err_msg) if 'params' in req_dict and 'registration' in req_dict['params']: if not validate_uuid(req_dict['params']['registration']): raise ParamError("%s is not a valid uuid for the registration parameter") if 'headers' not in req_dict or ('CONTENT_TYPE' not in req_dict['headers'] or req_dict['headers']['CONTENT_TYPE'] != "application/json"): err_msg = "The content type for activity state POSTs must be application/json" raise ParamError(err_msg) # Must have body included for state if 'body' not in req_dict: err_msg = "Could not find the state" raise ParamError(err_msg) # Extra validation if oauth if req_dict['auth']['type'] == 'oauth': validate_oauth_state_or_profile_agent(req_dict, "state") # Set state req_dict['state'] = req_dict.pop('raw_body', req_dict.pop('body', None)) return req_dict