Ruby
Журнал изменений
Все выпуски гема, сначала новые.
0.0.1
Первый выпуск. Он охватывает весь TypeScript SDK в том виде, в каком тот был на момент выпуска, то есть 0.0.8 плюс изменения, накопленные после него: 430 методов в 41 пространстве имён, каждый под именем из TypeScript в snake_case, и каждый из них отправляет побайтно тот же запрос, что и его двойник на TypeScript.
- У
OpenEmail::Clientесть метод чтения для каждого пространства имён, отemails,threadsиtemplatesдоprovider_imports,dns_connectionsиaccount.listAllстановитсяlist_all,getActiveстановитсяget_active, аtempMailстановитсяtemp_mail. - Тело запроса передаётся именованными аргументами или одним Hash, а его ключи сохраняют имена API в camelCase. Ответ возвращается как Hash с ключами типа Symbol.
- У каждого постраничного ресурса есть
list, который возвращает однуOpenEmail::Page,list_all, который возвращает все элементы как Array, иiterate, который передаёт каждый элемент в блок или возвращает Enumerator, запрашивающий следующую страницу, только когда до неё доходит.PeoplePage,TempMessagesPage,AddressBookPage,AddressBook,BatchResultиTemplateSendsнесут ответы, в которых есть что-то кроме списка. - Отказ API выбрасывает
OpenEmail::ApiErrorили его подкласс для типа ошибки сstatus,type,code,param,doc_url,request_id,retry_after_seconds,fieldsиbodyи с предикатами вродеvalidation?иstep_up_required?. Полное отсутствие ответа выбрасываетOpenEmail::NetworkErrorсtimeout?, если истёк срок ожидания. Ошибка в самом вызове выбрасываетArgumentErrorещё до отправки. OpenEmail.create_clientсобирает клиент изOPENEMAIL_API_KEY,OPENEMAIL_ACCESS_TOKENиOPENEMAIL_BASE_URL, аOpenEmail.init,OpenEmail.clientиOpenEmail.reset_clientуправляют одним общим клиентом, через который работаютOpenEmail.emailsи все остальные пространства имён.OpenEmail.create_temp_mailоткрывает одноразовые ящики без учётных данных.access_token:принимает токен доступа OAuth или любой объект, который отвечает наcallи возвращает токен, и такой объект вызывается перед каждым запросом. Каждый метод принимаетapi_key:, чтобы действовать с другим ключом в одном вызове, а методыtemp_mailпринимаютinbox_token:.OpenEmail.verify_webhook_signatureпроверяет доставку за постоянное время, отклоняет доставку старше пяти минут и возвращает разобранное событие. Подпись читается из Hash с заголовком в любом регистре, из окружения Rack или изrequest.headersв Rails.OpenEmail.to_base64,api_key?,access_token?,sealed?,resolve_language,language_by_codeиrtl_language?являются вспомогательными функциями TypeScript SDK, а каждый набор значений, который экспортирует корень его пакета, является замороженным Hash вOpenEmail.- У него нет зависимостей во время выполнения. Запросы идут через Net::HTTP с пулом постоянных соединений, который один клиент разделяет между потоками и пересоздаёт после форка, а
timeout:ограничивает всю попытку целиком. - Чтения, отправки и каждая запись, которую безопасно повторять, повторяются с нарастающей задержкой при 408, 500, 502, 503 и 504, а при 429 только тогда, когда его
Retry-Afterне больше минуты. Каждая отправка несёт ключ идемпотентности, который переиспользуют её повторы. - Клиент отказывается отправлять учётные данные по обычному
http:куда-либо, кроме этой машины, отклоняетbase_urlна0.0.0.0, отклоняет заголовок, который разделил бы запрос, и никогда не позволяетraw.requestвыйти за пределы источника базового URL.