Skip to content

Commit 5240cb5

Browse files
Merge pull request #385 from UiPath/refactor/consolidating-api
Refactor/consolidating api
2 parents 024d1b7 + 3075030 commit 5240cb5

File tree

3 files changed

+108
-20
lines changed

3 files changed

+108
-20
lines changed

src/uipath/_services/context_grounding_service.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import httpx
55
from pydantic import TypeAdapter
6+
from typing_extensions import deprecated
67

78
from .._config import Config
89
from .._execution_context import ExecutionContext
@@ -234,6 +235,7 @@ async def retrieve_async(
234235
raise Exception("ContextGroundingIndex not found") from e
235236

236237
@traced(name="contextgrounding_retrieve_by_id", run_type="uipath")
238+
@deprecated("Use retrieve instead")
237239
def retrieve_by_id(
238240
self,
239241
id: str,
@@ -266,6 +268,7 @@ def retrieve_by_id(
266268
).json()
267269

268270
@traced(name="contextgrounding_retrieve_by_id", run_type="uipath")
271+
@deprecated("Use retrieve_async instead")
269272
async def retrieve_by_id_async(
270273
self,
271274
id: str,
@@ -656,11 +659,11 @@ def _search_spec(
656659

657660
def _resolve_folder_key(self, folder_key, folder_path):
658661
if folder_key is None and folder_path is not None:
659-
folder_key = self._folders_service.retrieve_key_by_folder_path(folder_path)
662+
folder_key = self._folders_service.retrieve_key(folder_path=folder_path)
660663

661664
if folder_key is None and folder_path is None:
662665
folder_key = self._folder_key or (
663-
self._folders_service.retrieve_key_by_folder_path(self._folder_path)
666+
self._folders_service.retrieve_key(folder_path=self._folder_path)
664667
if self._folder_path
665668
else None
666669
)
Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional
22

3+
from typing_extensions import deprecated
4+
35
from uipath.tracing._traced import traced
46

57
from .._config import Config
@@ -8,20 +10,6 @@
810
from ._base_service import BaseService
911

1012

11-
def _retrieve_spec(folder_path: str) -> RequestSpec:
12-
folder_name = folder_path.split("/")[-1]
13-
return RequestSpec(
14-
method="GET",
15-
endpoint=Endpoint(
16-
"orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser"
17-
),
18-
params={
19-
"searchText": folder_name,
20-
"take": 1,
21-
},
22-
)
23-
24-
2513
class FolderService(BaseService):
2614
"""Service for managing UiPath Folders.
2715
@@ -34,8 +22,13 @@ def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
3422
super().__init__(config=config, execution_context=execution_context)
3523

3624
@traced(name="folder_retrieve_key_by_folder_path", run_type="uipath")
25+
@deprecated("Use retrieve_key instead")
3726
def retrieve_key_by_folder_path(self, folder_path: str) -> Optional[str]:
38-
spec = _retrieve_spec(folder_path)
27+
return self.retrieve_key(folder_path=folder_path)
28+
29+
@traced(name="folder_retrieve_key", run_type="uipath")
30+
def retrieve_key(self, *, folder_path: str) -> Optional[str]:
31+
spec = self._retrieve_spec(folder_path)
3932
response = self.request(
4033
spec.method,
4134
url=spec.endpoint,
@@ -50,3 +43,16 @@ def retrieve_key_by_folder_path(self, folder_path: str) -> Optional[str]:
5043
),
5144
None,
5245
)
46+
47+
def _retrieve_spec(self, folder_path: str) -> RequestSpec:
48+
folder_name = folder_path.split("/")[-1]
49+
return RequestSpec(
50+
method="GET",
51+
endpoint=Endpoint(
52+
"orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser"
53+
),
54+
params={
55+
"searchText": folder_name,
56+
"take": 1,
57+
},
58+
)

tests/sdk/services/test_folder_service.py

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ def test_retrieve_key_by_folder_path(
4040
},
4141
)
4242

43-
folder_key = service.retrieve_key_by_folder_path("test-folder-path")
43+
with pytest.warns(DeprecationWarning, match="Use retrieve_key instead"):
44+
folder_key = service.retrieve_key_by_folder_path("test-folder-path")
4445

4546
assert folder_key == "test-folder-key"
4647

@@ -57,7 +58,7 @@ def test_retrieve_key_by_folder_path(
5758
assert HEADER_USER_AGENT in sent_request.headers
5859
assert (
5960
sent_request.headers[HEADER_USER_AGENT]
60-
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key_by_folder_path/{version}"
61+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key/{version}"
6162
)
6263

6364
def test_retrieve_key_by_folder_path_not_found(
@@ -75,6 +76,84 @@ def test_retrieve_key_by_folder_path_not_found(
7576
json={"PageItems": []},
7677
)
7778

79+
with pytest.warns(DeprecationWarning, match="Use retrieve_key instead"):
80+
folder_key = service.retrieve_key_by_folder_path("non-existent-folder")
81+
82+
assert folder_key is None
83+
84+
sent_request = httpx_mock.get_request()
85+
if sent_request is None:
86+
raise Exception("No request was sent")
87+
88+
assert sent_request.method == "GET"
89+
assert (
90+
sent_request.url
91+
== f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=non-existent-folder&take=1"
92+
)
93+
94+
assert HEADER_USER_AGENT in sent_request.headers
95+
assert (
96+
sent_request.headers[HEADER_USER_AGENT]
97+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key/{version}"
98+
)
99+
100+
def test_retrieve_key(
101+
self,
102+
httpx_mock: HTTPXMock,
103+
service: FolderService,
104+
base_url: str,
105+
org: str,
106+
tenant: str,
107+
version: str,
108+
) -> None:
109+
httpx_mock.add_response(
110+
url=f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=test-folder-path&take=1",
111+
status_code=200,
112+
json={
113+
"PageItems": [
114+
{
115+
"Key": "test-folder-key",
116+
"FullyQualifiedName": "test-folder-path",
117+
}
118+
]
119+
},
120+
)
121+
122+
folder_key = service.retrieve_key_by_folder_path("test-folder-path")
123+
124+
assert folder_key == "test-folder-key"
125+
126+
sent_request = httpx_mock.get_request()
127+
if sent_request is None:
128+
raise Exception("No request was sent")
129+
130+
assert sent_request.method == "GET"
131+
assert (
132+
sent_request.url
133+
== f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=test-folder-path&take=1"
134+
)
135+
136+
assert HEADER_USER_AGENT in sent_request.headers
137+
assert (
138+
sent_request.headers[HEADER_USER_AGENT]
139+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key/{version}"
140+
)
141+
142+
def test_retrieve_key_not_found(
143+
self,
144+
httpx_mock: HTTPXMock,
145+
service: FolderService,
146+
base_url: str,
147+
org: str,
148+
tenant: str,
149+
version: str,
150+
) -> None:
151+
httpx_mock.add_response(
152+
url=f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=non-existent-folder&take=1",
153+
status_code=200,
154+
json={"PageItems": []},
155+
)
156+
78157
folder_key = service.retrieve_key_by_folder_path("non-existent-folder")
79158

80159
assert folder_key is None
@@ -92,5 +171,5 @@ def test_retrieve_key_by_folder_path_not_found(
92171
assert HEADER_USER_AGENT in sent_request.headers
93172
assert (
94173
sent_request.headers[HEADER_USER_AGENT]
95-
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key_by_folder_path/{version}"
174+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.FolderService.retrieve_key/{version}"
96175
)

0 commit comments

Comments
 (0)