Конфигурация
Каждый параметр клиента, что он читает из окружения и что отклоняет.
Опции
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());| Опция | Что делает |
|---|---|
| apiKey | API-ключ рабочего пространства, начинающийся с oe_live_ или oe_test_. В вызове он действует с другим ключом только для этого вызова. |
| accessToken | Токен доступа OAuth для приложения, которое подключил человек. Передайте ключ или токен, но не оба. |
| accessToken(Supplier<String>) | Функция, возвращающая токен доступа. Она выполняется перед каждым запросом, поэтому именно здесь стоит обновлять токен. |
| baseUrl | Источник API. К голому хосту, такому как localhost:2222, добавляется схема. |
| httpClient | Ваш собственный java.net.http.HttpClient: для прокси, своего SSLContext или исполнителя. |
| timeout | Сколько может длиться одна попытка. По умолчанию 30 секунд, ноль отключает ограничение, а загрузки ждут не менее десяти минут. |
| maxRetries | Сколько раз повторяется неудавшийся запрос. По умолчанию 2, а 0 отправляет один раз. |
| userAgent | Заменяет заголовок User-Agent, который состоит из openemail-java/ и версии. |
| header, headers | Добавляет заголовок к каждому запросу. |
| disableUpdateNotice | Отключает единственную строку в стандартном потоке ошибок, которая сообщает, что вышла более новая версия. OPENEMAIL_DISABLE_UPDATE_NOTICE=1 делает то же самое. |
Всё, что вы не указали, читается из окружения: OPENEMAIL_API_KEY, затем OPENEMAIL_ACCESS_TOKEN, и OPENEMAIL_BASE_URL. client.mode() сообщает, является ли ключ ключом live или test.
Параметры вызова
Параметры запроса и настройки вызова помещаются в RequestOptions, который передаётся после аргументов. У него есть метод для apiKey, idempotencyKey, timeout, limit и cursor, а set принимает любой другой параметр под тем именем, которое использует API. Каждый метод принимает параметры, перечисленные в его записи в справочнике, а параметр, который к нему не относится, отклоняется до отправки чего-либо.
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());RequestOptions неизменяем: каждый метод возвращает новый объект, поэтому общее значение никогда не изменится из-за кода, который что-то к нему добавляет. Прерывание потока останавливает вызов, который ждёт ответа.
Что клиент отклоняет
- Ключ, который не начинается с
oe_live_илиoe_test_, и ключ вместе с токеном доступа. - Отправку учётных данных по обычному
http:, если только сервер не находится на этой машине по адресуlocalhost,127.x.x.xили::1. - Базовый URL на
0.0.0.0, то есть на адресе, который сервер слушает. Используйте127.0.0.1с тем же портом. - Пустой идентификатор или состоящий только из точек, который парсер URL удалил бы.
- Переход по перенаправлению. HTTP-клиент по умолчанию никогда по ним не переходит, поэтому учётные данные никогда не уходят на другой хост.
Вывод клиента, RequestOptions или исключения никогда не показывает учётные данные. Ключ, токен и значения пользовательских заголовков не попадают в toString() и ни в одно сообщение, которое пишет клиент.
Конечная точка без метода
client.raw().request вызывает любой путь с учётными данными, базовым URL, тайм-аутом и политикой повторов клиента. Путь должен начинаться с одного /, а путь, который выходит за пределы источника базового URL, отклоняется.
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);