PHP
変更履歴
パッケージのすべてのリリースを新しい順に掲載します。
0.0.1
最初のリリースです。このリリースを切った時点の TypeScript SDK 全体を網羅しています。41 の名前空間にわたる 430 のメソッドが、それぞれ TypeScript と同じ名前で提供され、そのすべてが対応する TypeScript のメソッドとバイト単位で同じリクエストを送ります。
OpenEmail\OpenEmailには、emails、threads、templatesからproviderImports、dnsConnections、accountまで、すべての名前空間のプロパティがあり、それぞれのメソッドは TypeScript の名前をそのまま使います。- リクエストボディは、API の camelCase の名前をそのままキーにした連想配列で、オプションは
idempotencyKey:やapiKey:のような名前付き引数です。レスポンスはデコードされた連想配列として返ります。 - ページ分割されるすべてのリソースには、
Pageを 1 つ返すlist、すべてのアイテムを配列として返すlistAll、そこに達したときにだけ次のページを取得する Generator を返すiterateがあります。PeoplePage、TempMessagesPage、AddressBookPage、AddressBook、BatchResult、TemplateSendsは、一覧以上のものを含む答えを運びます。 - API による拒否は、
ApiExceptionまたはエラーの種類に対応するそのサブクラスをスローします。これはstatus、type、errorCode、param、docUrl、requestId、retryAfterSeconds、fields、bodyと、isValidation()やisStepUpRequired()のようなメソッドを持ちます。応答がまったくない場合はNetworkExceptionをスローし、期限を過ぎたときはisTimeout()が true になります。呼び出しそのものの誤りは、何かが送信される前にInvalidArgumentExceptionをスローします。いずれもOpenEmailExceptionを実装しています。 new OpenEmail()とOpenEmail::createClient()は、省略したものをOPENEMAIL_API_KEY、OPENEMAIL_ACCESS_TOKEN、OPENEMAIL_BASE_URLから読み取り、OpenEmail::init()、OpenEmail::getClient()、OpenEmail::resetClient()は 1 つの共有クライアントを管理します。OpenEmail::createTempMail()は資格情報なしで使い捨て受信箱を開きます。accessToken:は OAuth アクセストークン、またはそれを返す callable(各リクエストの前に呼び出されます)を受け取ります。すべてのメソッドは、1 回の呼び出しだけ別のキーで実行するためのapiKey:を受け取り、tempMailのメソッドはinboxToken:を受け取ります。資格情報を運ぶすべての引数には#[\SensitiveParameter]が付いています。OpenEmail::verifyWebhookSignature()は配信を定数時間で検証し、5 分より古い配信を拒否し、デコードされたイベントを返します。署名は、大文字小文字を問わないヘッダーの配列、$_SERVER、Symfony や Laravel のヘッダーバッグ、または PSR-7 のリクエストから読み取ります。OpenEmail::toBase64()、isApiKey()、isAccessToken()、isSealed()、resolveLanguage()、languageByCode()、isRtlLanguage()は TypeScript SDK のヘルパーにあたり、そのパッケージのルートがエクスポートする値の集合はすべて、OpenEmail\Constantsのクラスです。- 必要なのは、curl と json の拡張を備えた PHP 8.2 以降だけです。リクエストはクライアントごとに 1 つの cURL ハンドルを通り、リクエストの間も接続を開いたままにし、
pcntl_forkの後は新しい接続を開きます。timeout:は 1 回の試行全体の上限です。Psr18HttpClientを使うと、代わりに Guzzle、Symfony HttpClient、その他の PSR-18 クライアントを通して送ります。 - 読み取り、送信、そして繰り返しても安全なすべての書き込みは、408、500、502、503、504 のときにバックオフ付きでリトライされ、429 のときは
Retry-Afterが 1 分以下の場合にだけリトライされます。すべての送信は、リトライで再利用される冪等性キーを持ちます。 - クライアントは、このマシン以外に対して暗号化されていない
http:で資格情報を送ることを拒否し、0.0.0.0上のベース URL を拒否し、リクエストを分割してしまうヘッダーを拒否し、raw->request()がベース URL のオリジンの外に出ることを決して許しません。