def request_multiple(values: dict, data: StepData, name: str, save_key, ignore_testing=False): """Fragt für einen variablen Key, mehrere Male gewünschte Daten einer API ab. :param values: Werte aus der JSON-Datei :param data: Daten aus der API :param name: Testdatei, die geladen werden soll. :param save_key: Key, unter dem die Daten gespeichert werden. :param ignore_testing: Ob der Request durchgeführt werden soll, obwohl testing `true` ist. """ if data.get_config("testing", False) and not ignore_testing: return _load_test_data(values, data, name, save_key) if data.get_data(values.get("use_loop_as_key", False), values, bool): data.insert_data(save_key, {}, values) for _, key in data.loop_array(values["steps_value"], values): _fetch(values, data, f"{save_key}|{key}") else: data.insert_data(save_key, [None] * len(values["steps_value"]), values) for idx, _ in data.loop_array(values["steps_value"], values): _fetch( values, data, f"{save_key}|{idx}", )
def transform_array(values: dict, data: StepData): """Führt alle angegebenen `"transform"`-Funktionen für alle Werte eines Arrays aus. :param values: Werte aus der JSON-Datei :param data: Daten aus der API """ for _ in data.loop_array(data.get_data(values["array_key"], values), values): transform(values, data)
def _build_params_array(values: dict, data: StepData, api_key_name: str, req: dict): if req["params"] is None: req["params"] = {} for params in values["params_array"]: params_array = data.get_data(params["array"], values, list) data.deep_format(params_array, api_key_name, values) param = "".join([ f"{data.format(params['pattern'], values)}{data.format(params.get('delimiter', ''), values)}" for _ in data.loop_array(params_array, values) ]) req["params"][params["key"]] = param[:-1]
def loop(values: dict, data: StepData): """Durchläuft das angegebene Array und führt für jedes Element die angegebenen `"transform"`-Funktionen aus. :param values: Werte aus der JSON-Datei :param data: Daten aus der API """ loop_values = data.deep_format(values.get("values", None), values=values) # if values is none use range if loop_values is None: start = data.get_data(values.get("range_start", 0), values, int) stop = data.get_data(values["range_stop"], values, int) loop_values = range(start, stop) for _ in data.loop_array(loop_values, values): transform(values, data)