summaryrefslogtreecommitdiff
path: root/common/core.py
diff options
context:
space:
mode:
authorRasmus Luha <rasmus.luha@ut.ee>2025-05-14 23:42:05 +0300
committerRasmus Luha <rasmus.luha@ut.ee>2025-05-14 23:42:05 +0300
commit0f275b1bf3e24f7fb62e0cf8e2abe5eb8c45d929 (patch)
tree3d28dfcf26fa9e46b18ce8d693bbe4e5489b1b0e /common/core.py
parent7bfcf9a86553f7158673758cd500eece8e9cf132 (diff)
Revert "cleanup, comments for common module"
This reverts commit 0cdd22fd88b00bc939eac7824bb1063f675cba84.
Diffstat (limited to 'common/core.py')
-rw-r--r--common/core.py59
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