Configuração
Cada opção do cliente, o que ele lê do ambiente e o que recusa.
Opções
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());| Opção | O que faz |
|---|---|
| apiKey | A chave de API do espaço de trabalho, que começa por oe_live_ ou oe_test_. Numa chamada, atua com outra chave apenas nessa chamada. |
| accessToken | Um token de acesso OAuth, para uma aplicação que uma pessoa ligou. Passe uma chave ou um token, não ambos. |
| accessToken(Supplier<String>) | Uma função que devolve o token de acesso. É executada antes de cada pedido, por isso é o sítio para renovar um token. |
| baseUrl | A origem da API. A um host sem esquema, como localhost:2222, é acrescentado o esquema. |
| httpClient | O seu próprio java.net.http.HttpClient, para um proxy, um SSLContext personalizado ou um executor. |
| timeout | Quanto tempo pode demorar uma tentativa. A predefinição é de 30 segundos, zero desliga-o, e os carregamentos esperam pelo menos dez minutos. |
| maxRetries | Quantas vezes um pedido falhado é tentado de novo. O valor predefinido é 2, e 0 envia uma só vez. |
| userAgent | Substitui o cabeçalho User-Agent, que é openemail-java/ seguido da versão. |
| header, headers | Acrescenta um cabeçalho a todos os pedidos. |
| disableUpdateNotice | Desliga a única linha na saída de erro padrão que avisa que saiu uma versão mais recente. OPENEMAIL_DISABLE_UPDATE_NOTICE=1 faz o mesmo. |
Tudo o que omitir é lido do ambiente: OPENEMAIL_API_KEY, depois OPENEMAIL_ACCESS_TOKEN, e OPENEMAIL_BASE_URL. client.mode() diz se a chave é uma chave live ou test.
Opções de uma chamada
Os parâmetros de consulta e as definições de uma chamada vão num RequestOptions, passado depois dos argumentos. Tem um método para apiKey, idempotencyKey, timeout, limit e cursor, e set aceita qualquer outra opção com o nome que a API usa. Cada método aceita as opções que a sua entrada na referência enumera, e uma opção que não se aplica é recusada antes de se enviar seja o que for.
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());Um RequestOptions é imutável: cada método devolve um novo, por isso um valor partilhado nunca pode ser alterado pelo código que lhe acrescenta algo. Interromper a thread para uma chamada que está à espera.
O que o cliente recusa
- Uma chave que não começa por
oe_live_ouoe_test_, e uma chave juntamente com um token de acesso. - Enviar uma credencial por
http:simples, a menos que o servidor esteja nesta máquina, emlocalhost, num endereço127.x.x.xou em::1. - Um URL base em
0.0.0.0, que é um endereço em que um servidor escuta. Use127.0.0.1com a mesma porta. - Um id vazio, ou feito apenas de pontos, que um analisador de URL removeria.
- Seguir um redirecionamento. O cliente HTTP predefinido nunca segue nenhum, por isso uma credencial nunca viaja para outro anfitrião.
Imprimir um cliente, um RequestOptions ou uma exceção nunca mostra uma credencial. A chave, o token e os valores dos cabeçalhos personalizados ficam fora de toString() e de todas as mensagens que o cliente escreve.
Um endpoint sem método
client.raw().request chama qualquer caminho com a credencial, o URL base, o tempo limite e a política de novas tentativas do cliente. O caminho tem de começar por uma única /, e um caminho que saia da origem do URL base é recusado.
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);