Configuración
Cada opción del cliente, lo que lee del entorno y lo que rechaza.
Opciones
OpenEmail client = OpenEmail.builder() .apiKey(System.getenv("OPENEMAIL_API_KEY")) .baseUrl("https://api.openemail.uk") .timeout(Duration.ofSeconds(30)) .maxRetries(2) .header("X-Team", "billing") .build(); System.out.println(client.mode());| Opción | Qué hace |
|---|---|
| apiKey | La clave de API del espacio de trabajo, que empieza por oe_live_ o oe_test_. En una llamada, actúa con otra clave solo para esa llamada. |
| accessToken | Un token de acceso de OAuth, para una aplicación que una persona conectó. Pasa una clave o un token, no ambos. |
| accessToken(Supplier<String>) | Una función que devuelve el token de acceso. Se ejecuta antes de cada petición, así que es el lugar donde renovar un token. |
| baseUrl | El origen de la API. A un host sin esquema, como localhost:2222, se le añade el esquema. |
| httpClient | Tu propio java.net.http.HttpClient, para un proxy, un SSLContext personalizado o un ejecutor. |
| timeout | Cuánto puede durar un intento. El valor predeterminado es de 30 segundos, cero lo desactiva y las subidas esperan al menos diez minutos. |
| maxRetries | Cuántas veces se reintenta una petición fallida. El valor por defecto es 2, y 0 envía una sola vez. |
| userAgent | Sustituye la cabecera User-Agent, que es openemail-java/ y la versión. |
| header, headers | Añade una cabecera a todas las peticiones. |
| disableUpdateNotice | Desactiva la única línea en la salida de error estándar que avisa de que ha salido una versión más nueva. OPENEMAIL_DISABLE_UPDATE_NOTICE=1 hace lo mismo. |
Todo lo que omitas se lee del entorno: OPENEMAIL_API_KEY, luego OPENEMAIL_ACCESS_TOKEN, y OPENEMAIL_BASE_URL. client.mode() indica si la clave es una clave live o test.
Opciones de una llamada
Los parámetros de consulta y los ajustes de una llamada van en un RequestOptions, que se pasa después de los argumentos. Tiene un método para apiKey, idempotencyKey, timeout, limit y cursor, y set admite cualquier otra opción con el nombre que usa la API. Cada método acepta las opciones que enumera su entrada de la referencia, y una opción que no corresponde se rechaza antes de enviar nada.
RequestOptions options = RequestOptions.of("folder", "inbox") .apiKey(System.getenv("OPENEMAIL_API_KEY")) .timeout(Duration.ofSeconds(5)) .limit(50); Page threads = client.threads().list(options); System.out.println(threads.size());Un RequestOptions es inmutable: cada método devuelve uno nuevo, así que un valor compartido nunca puede ser modificado por el código que le añade algo. Interrumpir el hilo detiene una llamada que está esperando.
Lo que el cliente rechaza
- Una clave que no empieza por
oe_live_ooe_test_, y una clave junto con un token de acceso. - Enviar una credencial por
http:sin cifrar, salvo que el servidor esté en esta máquina, enlocalhost, en una dirección127.x.x.xo en::1. - Una URL base en
0.0.0.0, que es una dirección en la que escucha un servidor. Usa127.0.0.1con el mismo puerto. - Un id vacío, o uno formado solo por puntos, que un analizador de URL eliminaría.
- Seguir una redirección. El cliente HTTP por defecto nunca sigue ninguna, así que una credencial nunca viaja a otro host.
Imprimir un cliente, un RequestOptions o una excepción nunca muestra una credencial. La clave, el token y los valores de las cabeceras personalizadas quedan fuera de toString() y de todos los mensajes que escribe el cliente.
Un endpoint sin método
client.raw().request llama a cualquier ruta con la credencial, la URL base, el tiempo de espera y la política de reintentos del cliente. La ruta debe empezar por una sola /, y una ruta que sale del origen de la URL base se rechaza.
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);