Skip to content

Commit e9cbcc1

Browse files
committed
moved methods to seperate utils file
1 parent c8382f1 commit e9cbcc1

File tree

2 files changed

+95
-40
lines changed

2 files changed

+95
-40
lines changed

examples/ConnectedFields/eg001SetConnectedFields.sh

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -36,41 +36,26 @@ echo ""
3636
invoke_python() {
3737
if [[ $(python3 --version 2>&1) == *"not found"* ]]; then
3838
if [[ $(python --version 2>&1) != *"not found"* ]]; then
39-
python -c "$1"
39+
python -c "from examples.ConnectedFields.jsonParsingUtils import *; from json import *; print($1)"
4040
else
4141
echo "Either python or python3 must be installed to use this option."
4242
exit 1
4343
fi
4444
else
45-
python3 -c "$1"
45+
python3 -c "from examples.ConnectedFields.jsonParsingUtils import *; from json import *; print($1)"
4646
fi
4747
}
4848

4949
#Extract tab data from response
5050
#ds-snippet-start:ConnectedFields1Step4
5151
extract_verify_info() {
5252
clean_response=$(sed -n '/\[/,$p' "$response")
53-
echo "$clean_response" | invoke_python "
54-
import sys, json
55-
data = json.load(sys.stdin)
56-
filtered_data = [item for item in data if any('Verify' in tab.get('extensionData', {}).get('actionContract', '') for tab in item.get('tabs', []))]
57-
print(json.dumps(filtered_data))"
53+
invoke_python "filter_by_verify_action('''$clean_response''')"
5854
}
5955

6056
prompt_user_choice() {
61-
local json_data="$1"
62-
mapfile -t unique_apps < <(echo "$json_data" | echo "$json_data" | invoke_python "
63-
import sys, json
64-
data = json.load(sys.stdin)
65-
unique_apps = {}
66-
for item in data:
67-
app_id = item.get('appId')
68-
application_name = item.get('tabs', [{}])[0].get('extensionData', {}).get('applicationName')
69-
if app_id and application_name:
70-
unique_apps[app_id] = application_name
71-
for app_id, application_name in unique_apps.items():
72-
print(f'{app_id} {application_name}')
73-
")
57+
local json_data="'''$1'''"
58+
mapfile -t unique_apps < <(invoke_python "extract_unique_apps($json_data)")
7459

7560
if [[ -z "$json_data" || "$json_data" == "[]" ]]; then
7661
echo "No data verification were found in the account. Please install a data verification app."
@@ -87,12 +72,8 @@ for app_id, application_name in unique_apps.items():
8772

8873
read -p "Enter choice (1-${#unique_apps[@]}): " choice
8974
if [[ "$choice" =~ ^[1-${#unique_apps[@]}]$ ]]; then
90-
chosen_app_id="${unique_apps[$((choice-1))]%% *}"
91-
selected_data=$(echo "$json_data" | invoke_python "
92-
import sys, json
93-
data = json.load(sys.stdin)
94-
print(json.dumps([item for item in data if item.get('appId') == '$chosen_app_id']))
95-
")
75+
chosen_app_id="'${unique_apps[$((choice-1))]%% *}'"
76+
selected_data=$(invoke_python "filter_by_app_id($json_data, $chosen_app_id)")
9677
parse_verification_data "$selected_data"
9778
else
9879
echo "Invalid choice. Exiting."
@@ -101,21 +82,21 @@ print(json.dumps([item for item in data if item.get('appId') == '$chosen_app_id'
10182
}
10283

10384
parse_verification_data() {
104-
local clean_json="$1"
85+
local clean_json="'''$1'''"
10586

106-
app_id=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['appId'])")
107-
extension_group_id=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionGroupId'])")
108-
publisher_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['publisherName'])")
109-
application_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['applicationName'])")
110-
action_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionName'])")
111-
action_input_key=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionInputKey'])")
112-
action_contract=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionContract'])")
113-
extension_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionName'])")
114-
extension_contract=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionContract'])")
115-
required_for_extension=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['requiredForExtension'])")
116-
tab_label=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(' '.join([tab['tabLabel'] for tab in data[0]['tabs']]))")
117-
connection_key=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['connectionInstances'][0]['connectionKey'])")
118-
connection_value=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['connectionInstances'][0]['connectionValue'])")
87+
app_id=$(echo "$clean_json" | invoke_python "get_app_id($clean_json)")
88+
extension_group_id=$(echo "$clean_json" | invoke_python "get_extension_group_id($clean_json)")
89+
publisher_name=$(echo "$clean_json" | invoke_python "get_publisher_name($clean_json)")
90+
application_name=$(echo "$clean_json" | invoke_python "get_application_name($clean_json)")
91+
action_name=$(echo "$clean_json" | invoke_python "get_action_name($clean_json)")
92+
action_input_key=$(echo "$clean_json" | invoke_python "get_action_input_key($clean_json)")
93+
action_contract=$(echo "$clean_json" | invoke_python "get_action_contract($clean_json)")
94+
extension_name=$(echo "$clean_json" | invoke_python "get_extension_name($clean_json)")
95+
extension_contract=$(echo "$clean_json" | invoke_python "get_extension_contract($clean_json)")
96+
required_for_extension=$(echo "$clean_json" | invoke_python "get_required_for_extension($clean_json)")
97+
tab_label=$(echo "$clean_json" | invoke_python "get_tab_label($clean_json)")
98+
connection_key=$(echo "$clean_json" | invoke_python "get_connection_key($clean_json)")
99+
connection_value=$(echo "$clean_json" | invoke_python "get_connection_value($clean_json)")
119100

120101
echo "App ID: $app_id"
121102
echo "Extension Group ID: $extension_group_id"
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
from json import dumps, loads
2+
3+
def filter_by_verify_action(data: str) -> str:
4+
"""
5+
Filters items where any tab contains 'Verify' in the actionContract.
6+
"""
7+
return dumps([
8+
item for item in loads(data)
9+
if any(
10+
("extensionData" in tab and "actionContract" in tab["extensionData"] and "Verify" in tab["extensionData"]["actionContract"]) or
11+
("tabLabel" in tab and "connecteddata" in tab["tabLabel"])
12+
for tab in item.get("tabs", [])
13+
)
14+
])
15+
16+
def extract_unique_apps(data: str):
17+
"""
18+
Extracts unique appId and applicationName pairs from data.
19+
"""
20+
unique_apps = {}
21+
for item in loads(data):
22+
app_id = item.get('appId', '')
23+
application_name = item.get('tabs', [{}])[0].get('extensionData', {}).get('applicationName', '')
24+
if app_id != '' and application_name != '':
25+
unique_apps[app_id] = application_name
26+
27+
return '\n'.join([f'{app_id} {application_name}' for app_id, application_name in unique_apps.items()])
28+
29+
def filter_by_app_id(data: str, chosen_app_id: str) -> str:
30+
"""
31+
Filters items based on a given appId.
32+
"""
33+
return dumps([item for item in loads(data) if item.get('appId') == chosen_app_id])
34+
35+
def get_app_id(data: str) -> str:
36+
return loads(data)[0].get('appId', '')
37+
38+
def get_extension_group_id(data: str) -> str:
39+
return loads(data)[0]['tabs'][0]['extensionData'].get('extensionGroupId', '')
40+
41+
def get_publisher_name(data: str) -> str:
42+
return loads(data)[0]['tabs'][0]['extensionData'].get('publisherName', '')
43+
44+
def get_application_name(data: str) -> str:
45+
return loads(data)[0]['tabs'][0]['extensionData'].get('applicationName', '')
46+
47+
def get_action_name(data: str) -> str:
48+
return loads(data)[0]['tabs'][0]['extensionData'].get('actionName', '')
49+
50+
def get_action_input_key(data: str) -> str:
51+
return loads(data)[0]['tabs'][0]['extensionData'].get('actionInputKey', '')
52+
53+
def get_action_contract(data: str) -> str:
54+
return loads(data)[0]['tabs'][0]['extensionData'].get('actionContract', '')
55+
56+
def get_extension_name(data: str) -> str:
57+
return loads(data)[0]['tabs'][0]['extensionData'].get('extensionName', '')
58+
59+
def get_extension_contract(data: str) -> str:
60+
return loads(data)[0]['tabs'][0]['extensionData'].get('extensionContract', '')
61+
62+
def get_required_for_extension(data: str) -> str:
63+
return loads(data)[0]['tabs'][0]['extensionData'].get('requiredForExtension', '')
64+
65+
def get_tab_label(data: str) -> str:
66+
return ' '.join([tab['tabLabel'] for tab in loads(data)[0].get('tabs', [])])
67+
68+
def get_connection_key(data: str) -> str:
69+
connection_instances = loads(data)[0]['tabs'][0]['extensionData'].get('connectionInstances', [])
70+
return connection_instances[0].get('connectionKey', '') if len(connection_instances) > 0 else ''
71+
72+
def get_connection_value(data: str) -> str:
73+
connection_instances = loads(data)[0]['tabs'][0]['extensionData'].get('connectionInstances', [])
74+
return connection_instances[0].get('connectionValue', '') if len(connection_instances) > 0 else ''

0 commit comments

Comments
 (0)