Skip to content

Commit 1869a96

Browse files
feat: add X-UiPath-Licensing-Context header passing for http clients (#1343)
1 parent 452d7b8 commit 1869a96

12 files changed

Lines changed: 37 additions & 9 deletions

File tree

packages/uipath-platform/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath-platform"
3-
version = "0.0.12"
3+
version = "0.0.13"
44
description = "HTTP client library for programmatic access to UiPath Platform"
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11"

packages/uipath-platform/src/uipath/platform/common/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
from ._execution_context import UiPathExecutionContext
1919
from ._external_application_service import ExternalApplicationService
2020
from ._folder_context import FolderContext, header_folder
21+
from ._http_config import get_httpx_client_kwargs
2122
from ._models import Endpoint, RequestSpec
2223
from ._service_url_overrides import inject_routing_headers, resolve_service_url
2324
from ._span_utils import UiPathSpan, _SpanUtils
24-
from ._ssl_context import get_httpx_client_kwargs
2525
from ._url import UiPathUrl
2626
from ._user_agent import user_agent_value
2727
from .auth import TokenData

packages/uipath-platform/src/uipath/platform/common/_base_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
from ..errors import EnrichedException
2121
from ._config import UiPathApiConfig
2222
from ._execution_context import UiPathExecutionContext
23+
from ._http_config import get_httpx_client_kwargs
2324
from ._service_url_overrides import inject_routing_headers, resolve_service_url
24-
from ._ssl_context import get_httpx_client_kwargs
2525
from ._url import UiPathUrl
2626
from ._user_agent import user_agent_value
2727
from .constants import HEADER_USER_AGENT

packages/uipath-platform/src/uipath/platform/common/_config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
from functools import cached_property
23
from pathlib import Path
34

45
from pydantic import BaseModel
@@ -132,11 +133,30 @@ def studio_metadata_file_path(self) -> Path:
132133

133134
return Path(".uipath", STUDIO_METADATA_FILE)
134135

136+
@property
137+
def licensing_context(self) -> str | None:
138+
return self._read_internal_argument("licensingContext")
139+
135140
@property
136141
def is_tracing_enabled(self) -> bool:
137142
from uipath.platform.common.constants import ENV_TRACING_ENABLED
138143

139144
return os.getenv(ENV_TRACING_ENABLED, "true").lower() == "true"
140145

146+
def _read_internal_argument(self, key: str) -> str | None:
147+
internal_args = self._internal_arguments
148+
return internal_args.get(key) if internal_args else None
149+
150+
@cached_property
151+
def _internal_arguments(self) -> dict[str, str] | None:
152+
import json
153+
154+
try:
155+
with open(self.config_file_path, "r") as f:
156+
data = json.load(f)
157+
return data.get("runtime", {}).get("internalArguments")
158+
except (FileNotFoundError, json.JSONDecodeError):
159+
return None
160+
141161

142162
UiPathConfig = ConfigurationManager()

packages/uipath-platform/src/uipath/platform/common/_endpoints_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import httpx
66

77
from ._config import UiPathConfig
8+
from ._http_config import get_httpx_client_kwargs
89
from ._service_url_overrides import resolve_service_url
9-
from ._ssl_context import get_httpx_client_kwargs
1010

1111
loggger = logging.getLogger(__name__)
1212

packages/uipath-platform/src/uipath/platform/common/_external_application_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from httpx import HTTPStatusError, Request
77

88
from ..errors import EnrichedException
9-
from ._ssl_context import get_httpx_client_kwargs
9+
from ._http_config import get_httpx_client_kwargs
1010
from .auth import TokenData
1111
from .constants import ENV_BASE_URL
1212

packages/uipath-platform/src/uipath/platform/common/_ssl_context.py renamed to packages/uipath-platform/src/uipath/platform/common/_http_config.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,11 @@ def get_httpx_client_kwargs() -> Dict[str, Any]:
5050
# Auto-detect proxy from environment variables (httpx handles this automatically)
5151
# HTTP_PROXY, HTTPS_PROXY, NO_PROXY are read by httpx by default
5252

53+
from ._config import UiPathConfig
54+
from .constants import HEADER_LICENSING_CONTEXT
55+
56+
licensing_context = UiPathConfig.licensing_context
57+
if licensing_context:
58+
client_kwargs["headers"] = {HEADER_LICENSING_CONTEXT: licensing_context}
59+
5360
return client_kwargs

packages/uipath-platform/src/uipath/platform/common/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
HEADER_INTERNAL_TENANT_ID = "x-uipath-internal-tenantid"
3131
HEADER_JOB_KEY = "x-uipath-jobkey"
3232
HEADER_SW_LOCK_KEY = "x-uipath-sw-lockkey"
33+
HEADER_LICENSING_CONTEXT = "x-uipath-licensing-context"
3334

3435
# Data sources (request types)
3536
ORCHESTRATOR_STORAGE_BUCKET_DATA_SOURCE_REQUEST = (

packages/uipath-platform/src/uipath/platform/context_grounding/_context_grounding_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from ..common._config import UiPathApiConfig
1111
from ..common._execution_context import UiPathExecutionContext
1212
from ..common._folder_context import FolderContext, header_folder
13+
from ..common._http_config import get_httpx_client_kwargs
1314
from ..common._models import Endpoint, RequestSpec
14-
from ..common._ssl_context import get_httpx_client_kwargs
1515
from ..common.constants import (
1616
ORCHESTRATOR_STORAGE_BUCKET_DATA_SOURCE,
1717
)

packages/uipath-platform/src/uipath/platform/orchestrator/_attachments_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from ..common._config import UiPathApiConfig
1818
from ..common._execution_context import UiPathExecutionContext
1919
from ..common._folder_context import FolderContext, header_folder
20+
from ..common._http_config import get_httpx_client_kwargs
2021
from ..common._models import Endpoint, RequestSpec
21-
from ..common._ssl_context import get_httpx_client_kwargs
2222
from ..common.constants import TEMP_ATTACHMENTS_FOLDER
2323

2424

0 commit comments

Comments
 (0)