Saltar al contenido principal

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) — ShoriEnvironment o 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) — Cliente httpx propio.

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_id o api_key.

Ejemplo de uso:

```python
client = (
ShoriClientBuilder()
.environment("UAT").portal_id("p").tenant_id("t").api_key("k")
.build()
)
```