srilakshu012456 commited on
Commit
4f6e1ee
·
verified ·
1 Parent(s): 2ca42aa

Create wms_client.py

Browse files
Files changed (1) hide show
  1. services/wms_client.py +42 -0
services/wms_client.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ from typing import Dict, Any
3
+ from public_api.public_api_auth import login
4
+ from public_api.field_mapping import TOOL_REGISTRY
5
+ from public_api.utils import format_bot_response, flatten_json
6
+
7
+ class WmsClient:
8
+ def __init__(self):
9
+ self.session_data = {"wms_auth": None, "user_warehouse_id": None}
10
+
11
+ def connect(self) -> bool:
12
+ session, wh_id, ok = login()
13
+ if not ok:
14
+ return False
15
+ self.session_data["wms_auth"] = session
16
+ self.session_data["user_warehouse_id"] = wh_id
17
+ return True
18
+
19
+ def call_tool(self, tool_name: str, **kwargs) -> Dict[str, Any]:
20
+ cfg = TOOL_REGISTRY[tool_name]
21
+ func = cfg["function"]
22
+ mapping = cfg["mapping"]
23
+ formatters = cfg.get("formatters", {})
24
+ response_key = cfg.get("response_key", "data")
25
+
26
+ warehouse_id = kwargs.get("warehouse_id") or self.session_data["user_warehouse_id"]
27
+
28
+ raw = func(self.session_data, warehouse_id, **kwargs)
29
+ payload = raw.get(response_key, raw)
30
+ flat = flatten_json(payload)
31
+
32
+ requested_order = kwargs.get("fields")
33
+ from public_api.utils import extract_fields as extract_fields_ordered
34
+ extracted = extract_fields_ordered(flat, mapping, formatters, requested_order=requested_order)
35
+
36
+ return format_bot_response(
37
+ text="OK" if not raw.get("error") else "ERROR",
38
+ source=tool_name,
39
+ data=extracted,
40
+ state={"warehouse_id": warehouse_id},
41
+ debug=raw.get("error") or ""
42
+ )