diff options
Diffstat (limited to 'common/core.py')
-rw-r--r-- | common/core.py | 59 |
1 files changed, 56 insertions, 3 deletions
diff --git a/common/core.py b/common/core.py index e52cedd..f47a8b5 100644 --- a/common/core.py +++ b/common/core.py @@ -27,6 +27,7 @@ def ask_digit_input(max_index): print(f" Number ei kuulu valikusse. Palun vali number vahemikus 0-{max_index}.") +## Checks if api url is correct, if so then returns the json def is_app_url_correct(api_url, needs_auth, username,passwd): """ Checks if api url is correct, if so then returns the json @@ -54,6 +55,8 @@ def is_app_url_correct(api_url, needs_auth, username,passwd): return None, False +## TODO - add list level support with porcessors etc +## Asks the user json item to extract and returns it as dict item-value pair, where item is name and value json path def inspect_json_top_level(json_data): """ Asks the user json item to extract and returns it as dict item-value pair, where item is name and value json path @@ -93,10 +96,60 @@ def inspect_json_top_level(json_data): + + +###### Other option ########## + +def inspect_json_top_level_test(json_data, has_list=False): + path = "" + last_key = "value" #Placeholder + + while True: + print(json.dumps(json_data, indent=2)) + print("\nVali json võti või indeks millest soovid väärtuse andmekonveieriga ekstrakteerida\n") + + if isinstance(json_data, dict): + keys = list(json_data.keys()) + for index, key in enumerate(keys): + value = json_data[key] + value_type = type(value).__name__ + suggestion = "SplitJson" if isinstance(value, list) else "EvaluateJsonPath" + print(f" [{index}] {key} ({value_type}) → {suggestion}") + + selected_index = ask_digit_input(len(keys) - 1) + selected_key = keys[selected_index] + selected_value = json_data[selected_key] + path += "." + selected_key + last_key = selected_key + + elif isinstance(json_data, list): + has_list = True + for index, item in enumerate(json_data): + item_type = type(item).__name__ + print(f" [{index}] [{item_type}]") + + selected_index = ask_digit_input(len(json_data) - 1) + selected_value = json_data[selected_index] + path += f"[{selected_index}]" + last_key = str(selected_index) + + else: + # Primitive value, nothing to dive into + print(f"\nLõppväärtus: {json_data}") + return {last_key: path} + + + + if isinstance(selected_value, (dict, list)): + json_data = selected_value + else: + #print(f"\nValitud väärtus: '{selected_value}'") + print(f"\nValitud väärtus: '{path}'") + return {last_key: path} + + def get_data_values(): - """ - Interaktiivse moodi jaoks. Võimaldab kasutajal parsida API json vastust, et saada teada soovitud filtreeritavad andmeväljad. - """ + chosen_json_values = {} ##Getting API url and json values |