PHP
Журнал изменений
Каждый выпуск пакета, новые сверху.
0.0.1
Первый выпуск. Он охватывает весь TypeScript SDK в том виде, в каком тот был на момент выпуска: 430 методов в 41 пространстве имён, каждый под своим именем из TypeScript, и каждый из них отправляет побайтно тот же запрос, что и его двойник на TypeScript.
- У
OpenEmail\OpenEmailесть свойство для каждого пространства имён, отemails,threadsиtemplatesдоproviderImports,dnsConnectionsиaccount, а методы каждого сохраняют свои имена из TypeScript. - Тело запроса представляет собой ассоциативный массив, ключи которого сохраняют имена API в camelCase, а параметры передаются именованными аргументами, например
idempotencyKey:иapiKey:. Ответ возвращается как декодированный ассоциативный массив. - У каждого постраничного ресурса есть
list, который возвращает однуPage,listAll, который возвращает все элементы массивом, иiterate, который возвращает Generator, запрашивающий следующую страницу, только когда до неё доходит.PeoplePage,TempMessagesPage,AddressBookPage,AddressBook,BatchResultиTemplateSendsнесут ответы, в которых есть что-то кроме списка. - Отказ API выбрасывает
ApiExceptionили его подкласс для типа ошибки сstatus,type,errorCode,param,docUrl,requestId,retryAfterSeconds,fieldsиbodyи с методами вродеisValidation()иisStepUpRequired(). Полное отсутствие ответа выбрасываетNetworkExceptionсisTimeout(), если истёк срок ожидания. Ошибка в самом вызове выбрасываетInvalidArgumentExceptionещё до отправки. Каждое из них реализуетOpenEmailException. new OpenEmail()иOpenEmail::createClient()берут всё, что вы не указали, изOPENEMAIL_API_KEY,OPENEMAIL_ACCESS_TOKENиOPENEMAIL_BASE_URL, аOpenEmail::init(),OpenEmail::getClient()иOpenEmail::resetClient()управляют одним общим клиентом.OpenEmail::createTempMail()открывает одноразовые ящики без учётных данных.accessToken:принимает токен доступа OAuth или вызываемый объект, который его возвращает и вызывается перед каждым запросом. Каждый метод принимаетapiKey:, чтобы действовать с другим ключом в одном вызове, а методыtempMailпринимаютinboxToken:. Каждый параметр, несущий учётные данные, помечен#[\SensitiveParameter].OpenEmail::verifyWebhookSignature()проверяет доставку за постоянное время, отклоняет доставку старше пяти минут и возвращает декодированное событие. Подпись читается из массива заголовков с именами в любом регистре, из$_SERVER, из header bag Symfony или Laravel или из запроса PSR-7.OpenEmail::toBase64(),isApiKey(),isAccessToken(),isSealed(),resolveLanguage(),languageByCode()иisRtlLanguage()являются вспомогательными функциями TypeScript SDK, а каждый набор значений, который экспортирует корень его пакета, является классом вOpenEmail\Constants.- Ему нужен PHP 8.2 или новее с расширениями curl и json, и больше ничего. Запросы идут через один дескриптор cURL на клиент, который держит соединение открытым между запросами и открывает новое после
pcntl_fork, аtimeout:ограничивает всю попытку целиком.Psr18HttpClientвместо этого отправляет их через Guzzle, Symfony HttpClient или любой другой клиент PSR-18. - Чтения, отправки и каждая запись, которую безопасно повторять, повторяются с нарастающей задержкой при 408, 500, 502, 503 и 504, а при 429 только тогда, когда его
Retry-Afterне больше минуты. Каждая отправка несёт ключ идемпотентности, который переиспользуют её повторы. - Клиент отказывается отправлять учётные данные по обычному
http:куда-либо, кроме этой машины, отклоняет базовый URL на0.0.0.0, отклоняет заголовок, который разделил бы запрос, и никогда не позволяетraw->request()выйти за пределы источника базового URL.