Ruby
変更履歴
gem のすべてのリリースを新しい順に掲載します。
0.0.1
最初のリリースです。このリリースを切った時点の TypeScript SDK 全体、つまり 0.0.8 とその後に予定されていた変更を網羅しています:41 の名前空間にわたる 430 のメソッドが、それぞれ TypeScript の名前を snake_case にした名前で提供され、そのすべてが対応する TypeScript のメソッドとバイト単位で同じリクエストを送ります。
OpenEmail::Clientには、emails、threads、templatesからprovider_imports、dns_connections、accountまで、すべての名前空間のリーダーがあります。listAllはlist_all、getActiveはget_active、tempMailはtemp_mailになります。- リクエストボディはキーワード引数または 1 つの Hash として渡し、そのキーは API の camelCase の名前のままです。レスポンスは Symbol キーの Hash として返ります。
- ページ分割されるすべてのリソースには、
OpenEmail::Pageを 1 つ返すlist、すべてのアイテムを Array として返すlist_all、各アイテムをブロックに yield するか、そこに達したときにだけ次のページを取得する Enumerator を返すiterateがあります。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?が true になります。呼び出し自体の誤りは、何かが送信される前にArgumentErrorを送出します。 OpenEmail.create_clientはOPENEMAIL_API_KEY、OPENEMAIL_ACCESS_TOKEN、OPENEMAIL_BASE_URLからクライアントを作り、OpenEmail.init、OpenEmail.client、OpenEmail.reset_clientは、OpenEmail.emailsをはじめとするすべての名前空間が使う 1 つの共有クライアントを管理します。OpenEmail.create_temp_mailは資格情報なしで使い捨て受信箱を開きます。access_token:は OAuth アクセストークン、またはcallに応答してトークンを返すもの(各リクエストの前に呼び出されます)を受け取ります。すべてのメソッドは、1 回の呼び出しだけ別のキーで実行するためのapi_key:を受け取り、temp_mailのメソッドはinbox_token:を受け取ります。OpenEmail.verify_webhook_signatureは配信を一定時間で比較して検証し、5 分より古い配信を拒否し、パース済みのイベントを返します。署名は、大文字小文字を問わない Hash、Rack の env、または Rails のrequest.headersから読み取ります。OpenEmail.to_base64、api_key?、access_token?、sealed?、resolve_language、language_by_code、rtl_language?は TypeScript SDK のヘルパーにあたり、そのパッケージのルートがエクスポートする値の集合はすべて、OpenEmail上の凍結された Hash です。- 実行時の依存関係はありません。リクエストは Net::HTTP を通じて送られ、1 つのクライアントがスレッド間で共有し、fork の後に作り直すキープアライブ接続のプールを使います。
timeout:は 1 回の試行全体の上限です。 - 読み取り、送信、そして繰り返しても安全なすべての書き込みは、408、500、502、503、504 のときにバックオフ付きでリトライされ、429 のときは
Retry-Afterが 1 分以下の場合にだけリトライされます。すべての送信は、リトライで再利用される冪等性キーを持ちます。 - クライアントは、このマシン以外に対して暗号化されていない
http:で資格情報を送ることを拒否し、0.0.0.0上のbase_urlを拒否し、リクエストを分割してしまうヘッダーを拒否し、raw.requestがベース URL のオリジンの外に出ることを決して許しません。