Перейти к документации
Java

Конфигурация

Каждый параметр клиента, что он читает из окружения и что отклоняет.

Опции

Client.java
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());
ОпцияЧто делает
apiKeyAPI-ключ рабочего пространства, начинающийся с 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. Каждый метод принимает параметры, перечисленные в его записи в справочнике, а параметр, который к нему не относится, отклоняется до отправки чего-либо.

AnotherWorkspace.java
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, отклоняется.

RawRequest.java
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);