Python SDK
عميل Python الرسمي لواجهة OpenEmail API. متزامن وغير متزامن، ومُحدَّد الأنواع بالكامل، ودالة واحدة لكل نقطة نهاية.
ما هي
حزمة واحدة فوق الواجهة البرمجية كلها (الإرسال والقوالب والتتبع والسلاسل والمسودات والتسميات وجهات الاتصال والجماهير ونماذج الاشتراك والبث والنطاقات والقواعد وخطافات الويب والتقويم والإعدادات والأدوار والأعضاء والحظر والملفات والصناديق المؤقتة) مع TypedDict لكل طلب واستجابة، وصنفين للأخطاء، وإعادة محاولات لا يمكنها تكرار إرسال، وأداة تحقق من تواقيع خطافات الويب. تعمل على Python 3.10 فما أحدث ولا تعتمد إلا على httpx وanyio وtyping-extensions. تحمل مفتاح API لمساحة عمل أو رمز وصول OAuth، فمكانها خادم أو أداة تعمل على جهازك أنت، والصناديق المؤقتة هي الجزء الوحيد الذي لا يحتاج إلى بيانات اعتماد.
pip install openemailimport os from openemail import init, openemail init(os.environ['OPENEMAIL_API_KEY']) openemail.emails.send({ 'from': 'Acme Billing <[email protected]>', 'to': '[email protected]', 'subject': 'Your September invoice', 'html': '<p>Invoice attached.</p>',})متزامن وغير متزامن
OpenEmail متزامن، وAsyncOpenEmail نظيره غير المتزامن بالخيارات نفسها والدوال نفسها، وكل دالة فيه تُستدعى مع await. يعمل على asyncio وtrio، ويصبح iterate المقسَّم إلى صفحات حلقة async for.
import asyncio from openemail import AsyncOpenEmail async def main() -> None: async with AsyncOpenEmail() as client: email = await client.emails.send({ 'from': 'Acme Billing <[email protected]>', 'to': '[email protected]', 'subject': 'Your September invoice', 'html': '<p>Invoice attached.</p>', }) async for thread in client.threads.iterate(folder='inbox'): print(thread['id']) print(email['id'], email['status']) asyncio.run(main())العميل المشترك openemail متزامن، لذا ابنِ AsyncOpenEmail بنفسك، مرة واحدة، وأغلقه بـ aclose() أو بكتلة async with.
إلى أين تذهب
يغلّف الـ API نفسه الذي يغلّفه كل عميل آخر
كل ما هنا هو السطح نفسه الذي يوثّقه مرجع الـ API، فاقرأ ذاك لمعرفة ما تفعله نقطة النهاية واقرأ هذا لمعرفة كيفية استدعائها. وهناك دالة واحدة لكل عملية موثّقة، وفحص التطابق في الحزمة يقرأ مستند OpenAPI ليثبت ذلك.
لكل دالة TypeScript نظير في Python بالاسم نفسه بصيغة snake_case، ويشغّل فحص التكافؤ كل زوج بالوسائط نفسها ويفشل ما لم يرسلا الطلب نفسه، ويعيدا المحاولة بالطريقة نفسها، ويعيدا القيمة نفسها.