Skip to content

Commit 4e0ab4e

Browse files
feat: added route for fetching layout data
1 parent 4e37113 commit 4e0ab4e

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

python_fm_dapi_weaver/controllers/index.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
find_record,
77
update_record,
88
delete_record,
9-
upload_container
9+
upload_container,
10+
fetch_layouts
1011
)
1112

1213
# List of method names that do not require token/session validation.
@@ -22,7 +23,8 @@
2223
"deleteRecord": delete_record,
2324
"signin": signin,
2425
"signout" : signout,
25-
"uploadContainer":upload_container
26+
"uploadContainer":upload_container,
27+
"fetchLayouts": fetch_layouts
2628

2729
}
2830

python_fm_dapi_weaver/controllers/records.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,3 +318,32 @@ async def upload_container(req: Request):
318318

319319
raise HTTPException(status_code=500, detail=f"Unexpected error: {str(e)}")
320320

321+
async def fetch_layouts(req: Request):
322+
data = req.state.body
323+
token = req.state.fmSessionToken
324+
fm_server = data.get("fmServer")
325+
database = data.get("database")
326+
327+
validate_required_params({
328+
"fmSessionToken": token,
329+
"fmServer": fm_server,
330+
"database": database
331+
})
332+
333+
apiUrl = f"https://{fm_server}/fmi/data/vLatest/databases/{database}/layouts"
334+
335+
headers = {
336+
"Authorization": f"Bearer {token}"
337+
}
338+
339+
try:
340+
response = requests.get(apiUrl, headers=headers, verify=False)
341+
response.raise_for_status()
342+
json_data = response.json()
343+
return {
344+
"layouts": json_data["response"]["layouts"],
345+
"session": token
346+
}
347+
348+
except requests.HTTPError as e:
349+
raise handle_api_error(e,"An error occurred while fetching the layouts.")

0 commit comments

Comments
 (0)