ShoriClientBuilder
Construye un ShoriClient validando la configuración en build().
Es mutable y no thread-safe: usa un builder por construcción. El ShoriClient
resultante sí es thread-safe.
Ejemplo General
```python
client = (
ShoriClientBuilder()
.environment(ShoriEnvironment.PROD)
.portal_id("mi-portal-id")
.tenant_id("mi-tenant-id")
.api_key("mi-api-key")
.timeout_ms(40_000) # opcional
.max_workers(16) # opcional
.build()
)
```
Métodos
def __init__() -> None
def environment(environment: ShoriEnvironment | str) -> Self
Define el ambiente de Shori.
Parámetros:
environment(ShoriEnvironment | str) —ShoriEnvironmento su nombre ("DEV","UAT","PROD").
Retorna: Self — El mismo builder (encadenable).
Lanza:
ValidationException— Si el nombre no es un ambiente válido.
Ejemplo de uso:
```python
ShoriClientBuilder().environment(ShoriEnvironment.PROD)
ShoriClientBuilder().environment("uat")
```
def portal_id(portal_id: str) -> Self
Define el UUID del portal.
Parámetros:
portal_id(str) — UUID del portal.
Retorna: Self — El mismo builder (encadenable).
Ejemplo de uso:
```python
ShoriClientBuilder().portal_id("portal-uuid")
```
def tenant_id(tenant_id: str) -> Self
Define el UUID del tenant.
Parámetros:
tenant_id(str) — UUID del tenant.
Retorna: Self — El mismo builder (encadenable).
Ejemplo de uso:
```python
ShoriClientBuilder().tenant_id("tenant-uuid")
```
def api_key(api_key: str) -> Self
Define la API Key proporcionada por Shori.
Parámetros:
api_key(str) — API Key.
Retorna: Self — El mismo builder (encadenable).
Ejemplo de uso:
```python
ShoriClientBuilder().api_key(os.environ["SHORI_API_KEY"])
```
def timeout_ms(timeout_ms: int) -> Self
Define el timeout de cada request. Por defecto 30000 ms (30 s).
Parámetros:
timeout_ms(int) — Milisegundos (> 0).
Retorna: Self — El mismo builder (encadenable).
Lanza:
ValidationException— Si es ≤ 0.
Ejemplo de uso:
```python
ShoriClientBuilder().timeout_ms(40_000)
```
def max_workers(max_workers: int) -> Self
Máximo de hilos para operaciones internas en paralelo (descarga de adjuntos). Por defecto 8.
Parámetros:
max_workers(int) — Número de hilos (≥ 1).
Retorna: Self — El mismo builder (encadenable).
Lanza:
ValidationException— Si es < 1.
Ejemplo de uso:
```python
ShoriClientBuilder().max_workers(16)
```
def http_client(client: httpx.Client) -> Self
Usa tu propio httpx.Client (proxy, mTLS, transporte de pruebas...).
El SDK no lo cierra en close(): es responsabilidad de quien lo crea.
Parámetros:
client(httpx.Client) — Clientehttpxpropio.
Retorna: Self — El mismo builder (encadenable).
Ejemplo de uso:
```python
import httpx
propio = httpx.Client(proxy="http://proxy:8080", verify="/ruta/ca.pem")
client = ShoriClientBuilder()....http_client(propio).build()
```
def build() -> ShoriClient
Valida la configuración y construye el ShoriClient.
Retorna: ShoriClient — ShoriClient listo para usar (thread-safe).
Lanza:
ValidationException— Si falta ambiente,portal_id,tenant_idoapi_key.
Ejemplo de uso:
```python
client = (
ShoriClientBuilder()
.environment("UAT").portal_id("p").tenant_id("t").api_key("k")
.build()
)
```