پرش به مستندات
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 پایه بیرون برود.