serJD commited on
Commit
380db35
·
verified ·
1 Parent(s): d33d53d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -13
app.py CHANGED
@@ -73,6 +73,23 @@ def fetch_referenced_object(speckleToken, apiUrl, stream_id, object_id):
73
  """
74
  return send_graphql_query(speckleToken, apiUrl, query)
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  @webhook_endpoint
77
  async def update_streams(request: Request):
78
  payload = await request.json()
@@ -89,19 +106,14 @@ async def update_streams(request: Request):
89
  object_data = fetch_referenced_object(speckle_token, api_url, stream_id, referenced_object_id)
90
  if object_data:
91
  print(json.dumps(object_data, indent=2))
92
-
93
- # Extract the 'data' field, which is a JSON string
94
- nested_data_str = object_data['data']['stream']['object']['data']['data']
95
-
96
- # Parse the JSON string to a dictionary
97
- nested_data = json.loads(nested_data_str)
98
-
99
- # Access the 'teamName' field
100
- team_name = nested_data.get('teamName', 'N/A')
101
- print(f"Team Name: {team_name}")
102
-
103
- # Send the team name to the WebSocket server
104
- await send_data(team_name)
105
  else:
106
  print("Failed to retrieve the referenced object data.")
107
  else:
 
73
  """
74
  return send_graphql_query(speckleToken, apiUrl, query)
75
 
76
+ def extract_team_name(object_data):
77
+ # First try to get the team name directly
78
+ data_field = object_data['data']['stream']['object']['data']
79
+ try:
80
+ nested_data_str = data_field['data']
81
+ nested_data = json.loads(nested_data_str)
82
+ return nested_data.get('teamName')
83
+ except (KeyError, json.JSONDecodeError):
84
+ pass
85
+
86
+ # If not found, check for referencedId
87
+ if '@Data' in data_field:
88
+ referenced_id = data_field['@Data'].get('referencedId')
89
+ if referenced_id:
90
+ return referenced_id # Returning the ID to fetch further if needed
91
+ return None
92
+
93
  @webhook_endpoint
94
  async def update_streams(request: Request):
95
  payload = await request.json()
 
106
  object_data = fetch_referenced_object(speckle_token, api_url, stream_id, referenced_object_id)
107
  if object_data:
108
  print(json.dumps(object_data, indent=2))
109
+
110
+ team_name = extract_team_name(object_data)
111
+
112
+ if team_name:
113
+ print(f"Team Name: {team_name}")
114
+ await send_data({"teamName": team_name})
115
+ else:
116
+ print("Team name not found in the object data.")
 
 
 
 
 
117
  else:
118
  print("Failed to retrieve the referenced object data.")
119
  else: