تخطَّ إلى المستندات
PHP

سجل التغييرات

كل إصدار من الحزمة، الأحدث أولاً.

0.0.1

الإصدار الأول. يغطي TypeScript SDK كله كما كان حين أُعدّ هذا الإصدار: 430 تابعًا في 41 مساحة أسماء، كلٌّ منها باسمه في TypeScript، وكل واحد منها يرسل بايتًا ببايت الطلب نفسه الذي يرسله توأمه في TypeScript.

  • لـ OpenEmail\OpenEmail خاصية لكل مساحة أسماء، من emails وthreads وtemplates إلى providerImports وdnsConnections وaccount، وتحتفظ التوابع في كل منها بأسمائها في TypeScript.
  • متن الطلب مصفوفة ترابطية تحتفظ مفاتيحها بأسماء API بصيغة camelCase، والخيارات وسائط مسمّاة مثل 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، أو كائنًا قابلًا للاستدعاء يعيد رمزًا، ويُستدعى قبل كل طلب. ويأخذ كل تابع apiKey: ليعمل بمفتاح آخر في استدعاء واحد، وتأخذ توابع tempMail الوسيط inboxToken:. وكل معامل يحمل اعتمادًا مُعلَّم بـ #[\SensitiveParameter].
  • يفحص OpenEmail::verifyWebhookSignature() التسليم بزمن ثابت، ويرفض التسليم الأقدم من خمس دقائق، ويعيد الحدث بعد فكّ ترميزه. ويقرأ التوقيع من مصفوفة ترويسات بأي حالة أحرف، أو من $_SERVER، أو من حاوية ترويسات في Symfony أو Laravel، أو من طلب PSR-7.
  • OpenEmail::toBase64() وisApiKey() وisAccessToken() وisSealed() وresolveLanguage() وlanguageByCode() وisRtlLanguage() هي الأدوات المساعدة الموجودة في TypeScript SDK، وكل مجموعة قيم يصدّرها جذر حزمته صنف في OpenEmail\Constants.
  • يحتاج إلى PHP 8.2 أو أحدث مع الإضافتين curl وjson، ولا شيء غير ذلك. وتمر الطلبات عبر مقبض cURL واحد لكل عميل، يُبقي اتصاله مفتوحًا بين الطلبات ويفتح اتصالًا جديدًا بعد pcntl_fork، ويحدّ timeout: المحاولة كاملة. أما Psr18HttpClient فيرسلها بدلًا من ذلك عبر Guzzle أو Symfony HttpClient أو أي عميل PSR-18 آخر.
  • تُعاد محاولة القراءات والإرسالات وكل كتابة آمنة للتكرار عند 408 و500 و502 و503 و504 مع تأخير متزايد بين المحاولات، وعند 429 فقط حين تكون قيمة Retry-After فيه دقيقة أو أقل. ويحمل كل إرسال مفتاح لاتكرارية تعيد إعادات محاولته استخدامه.
  • يرفض العميل إرسال اعتماد عبر http: العادي إلى أي شيء غير هذا الجهاز، ويرفض عنوان URL أساسيًا على 0.0.0.0، ويرفض ترويسة قد تقسم الطلب، ولا يسمح أبدًا لـ raw->request() بمغادرة أصل عنوان URL الأساسي.