PHP
فهرست تغییرات
همهٔ انتشارهای این بسته، تازهترین در ابتدا.
0.0.1
نخستین انتشار. کل SDK TypeScript را آنگونه که هنگام آماده شدن این انتشار بود پوشش میدهد: 430 متد در 41 فضای نام، هرکدام با نام TypeScript خودش، و هر یک از آنها بایت به بایت همان درخواستی را میفرستد که همتای TypeScript آن.
OpenEmail\OpenEmailبرای هر فضای نام یک ویژگی دارد، ازemails،threadsوtemplatesتاproviderImports،dnsConnectionsوaccount، و متدهای هرکدام نامهای TypeScript خود را نگه میدارند.- بدنهٔ درخواست یک آرایهٔ انجمنی است که کلیدهایش نامهای camelCase در API را نگه میدارند، و گزینهها آرگومانهای نامدار هستند مانند
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 میگیرد، یا یک callable که یکی برگرداند، که پیش از هر درخواست فراخوانی میشود. هر متدapiKey:را میگیرد تا برای یک فراخوانی با کلید دیگری عمل کند، و متدهایtempMail،inboxToken:را میگیرند. هر پارامتری که اعتبارنامه حمل میکند با#[\SensitiveParameter]علامت خورده است.OpenEmail::verifyWebhookSignature()یک تحویل را در زمان ثابت بررسی میکند، تحویلی را که بیش از پنج دقیقه قدمت داشته باشد رد میکند و رویداد دیکدشده را برمیگرداند. امضا را از آرایهای از سرآیندها با هر بزرگی و کوچکی حروف، از$_SERVER، از header bag در Symfony یا Laravel، یا از یک درخواست PSR-7 میخواند.OpenEmail::toBase64()،isApiKey()،isAccessToken()،isSealed()،resolveLanguage()،languageByCode()وisRtlLanguage()همان کمکیهای SDK TypeScript هستند، و هر مجموعهمقداری که ریشهٔ بستهٔ آن صادر میکند یک کلاس درOpenEmail\Constantsاست.- به PHP 8.2 یا بالاتر با افزونههای curl و json نیاز دارد، و به هیچ چیز دیگری. درخواستها برای هر کلاینت از یک هندل cURL میگذرند، که اتصالش را میان درخواستها باز نگه میدارد و پس از
pcntl_forkاتصال تازهای باز میکند، وtimeout:کل یک تلاش را محدود میکند.Psr18HttpClientبهجای آن، درخواستها را از راه Guzzle، Symfony HttpClient یا هر کلاینت PSR-18 دیگری میفرستد. - خواندنها، ارسالها و هر نوشتنی که تکرارش بیخطر است، روی 408، 500، 502، 503 و 504 با backoff دوباره تلاش میشوند، و روی 429 فقط وقتی
Retry-Afterآن یک دقیقه یا کمتر باشد. هر ارسال یک کلید idempotency دارد که تلاشهای دوبارهاش از آن استفاده میکنند. - کلاینت از فرستادن اعتبارنامه با
http:ساده به هر جایی جز همین دستگاه خودداری میکند، URL پایه روی0.0.0.0را رد میکند، سرآیندی را که درخواست را دو تکه کند رد میکند، و هرگز نمیگذاردraw->request()از origin مربوط به URL پایه بیرون برود.