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 الأساسي.