الإعداد
كل خيار للعميل، وما يقرؤه من البيئة، وما يرفضه.
الخيارات
OpenEmail client = OpenEmail.builder() .apiKey(System.getenv("OPENEMAIL_API_KEY")) .baseUrl("https://api.openemail.uk") .timeout(Duration.ofSeconds(30)) .maxRetries(2) .header("X-Team", "billing") .build(); System.out.println(client.mode());| الخيار | ما تفعله |
|---|---|
| apiKey | مفتاح API لمساحة العمل، ويبدأ بـ oe_live_ أو oe_test_. وعند تمريره في استدعاء، يعمل بمفتاح آخر لذلك الاستدعاء فقط. |
| accessToken | رمز وصول OAuth لتطبيق ربطه شخص ما. مرّر مفتاحًا أو رمزًا، لا كليهما. |
| accessToken(Supplier<String>) | دالة تعيد رمز الوصول. تُنفَّذ قبل كل طلب، فهي المكان المناسب لتجديد الرمز. |
| baseUrl | أصل الواجهة البرمجية. المضيف المجرد مثل localhost:2222 يُضاف إليه المخطط. |
| httpClient | عميلك الخاص من java.net.http.HttpClient، لاستخدام وسيط أو SSLContext مخصص أو منفّذ. |
| timeout | المدة التي قد تستغرقها محاولة واحدة. القيمة الافتراضية 30 ثانية، والصفر يوقفها، وعمليات الرفع تنتظر عشر دقائق على الأقل. |
| maxRetries | عدد مرات إعادة محاولة الطلب الفاشل. القيمة الافتراضية 2، و0 يرسل مرة واحدة. |
| userAgent | يستبدل الترويسة User-Agent، وهي openemail-java/ متبوعة بالإصدار. |
| header, headers | يضيف ترويسة إلى كل طلب. |
| disableUpdateNotice | يوقف السطر الوحيد على مخرج الخطأ القياسي الذي يخبرك بصدور إصدار أحدث. ويفعل OPENEMAIL_DISABLE_UPDATE_NOTICE=1 الشيء نفسه. |
كل ما تتركه يُقرأ من البيئة: OPENEMAIL_API_KEY، ثم OPENEMAIL_ACCESS_TOKEN، وOPENEMAIL_BASE_URL. وتخبرك client.mode() إن كان المفتاح مفتاح live أم مفتاح test.
الخيارات في الاستدعاء
معاملات الاستعلام وإعدادات الاستدعاء توضع في RequestOptions يُمرَّر بعد الوسائط. فيه دالة لكل من apiKey وidempotencyKey وtimeout وlimit وcursor، وتقبل set أي خيار آخر بالاسم الذي تستخدمه الواجهة البرمجية. تقبل كل دالة الخيارات التي يسردها مدخلها في المرجع، والخيار الذي لا ينطبق يُرفض قبل إرسال أي شيء.
RequestOptions options = RequestOptions.of("folder", "inbox") .apiKey(System.getenv("OPENEMAIL_API_KEY")) .timeout(Duration.ofSeconds(5)) .limit(50); Page threads = client.threads().list(options); System.out.println(threads.size());RequestOptions غير قابل للتغيير: كل دالة تعيد نسخة جديدة، فلا يمكن أبدًا أن تتغير قيمة مشتركة بسبب الشيفرة التي تضيف إليها. ومقاطعة الخيط توقف استدعاءً في حالة انتظار.
ما يرفضه العميل
- مفتاح لا يبدأ بـ
oe_live_أوoe_test_، ومفتاح مع رمز وصول معًا. - إرسال بيانات اعتماد عبر
http:غير المشفر، إلا إذا كان الخادم على هذا الجهاز عندlocalhostأو عنوان127.x.x.xأو::1. - عنوان URL أساسي على
0.0.0.0، وهو عنوان يستمع عليه الخادم. استخدم127.0.0.1مع المنفذ نفسه. - معرّف فارغ، أو معرّف مكوّن من نقاط فقط، كان محلل عناوين URL سيحذفه.
- تتبّع إعادة التوجيه. عميل HTTP الافتراضي لا يتبع أي إعادة توجيه، فلا تنتقل بيانات الاعتماد أبدًا إلى مضيف آخر.
طباعة عميل أو RequestOptions أو استثناء لا تُظهر أبدًا بيانات اعتماد. المفتاح والرمز وقيم الترويسات المخصصة تبقى خارج toString() وخارج كل رسالة يكتبها العميل.
نقطة نهاية بلا دالة
تستدعي client.raw().request أي مسار ببيانات اعتماد العميل وعنوانه الأساسي ومهلته وسياسة إعادة المحاولة لديه. يجب أن يبدأ المسار بعلامة / واحدة، والمسار الذي يخرج عن أصل العنوان الأساسي يُرفض.
Object label = client.raw().request("POST", "/labels", Body.of("name", "Invoices")); System.out.println(label);