コード例 #1
0
 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)
コード例 #2
0
ファイル: req_validate.py プロジェクト: niyikai/ADL_LRS
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
コード例 #3
0
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")
コード例 #4
0
ファイル: req_validate.py プロジェクト: washu/ADL_LRS
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
コード例 #5
0
ファイル: req_validate.py プロジェクト: washu/ADL_LRS
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
コード例 #6
0
 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)
コード例 #7
0
ファイル: req_validate.py プロジェクト: niyikai/ADL_LRS
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