کمکیها و ثابتها
آنچه gem جز کلاینت تعریف میکند.
متدهای ماژول
| متد | چیست |
|---|---|
| OpenEmail.init, OpenEmail.client | کلاینت مشترک را یک بار پیکربندی کنید، سپس از هر جا به آن دسترسی داشته باشید. اگر init هرگز اجرا نشده باشد، خودش را از OPENEMAIL_API_KEY میسازد. |
| OpenEmail.emails، OpenEmail.threads و هر فضای نام دیگر | میانبرهایی به فضاهای نام کلاینت مشترک. |
| OpenEmail.reset_client | کلاینت مشترک را کنار میگذارد، پس فراخوانی بعدی یک کلاینت تازه میسازد، که همان چیزی است که یک آزمون میان موردهایش میخواهد. |
| OpenEmail.create_client, OpenEmail::Client.new, OpenEmail.new | یک کلاینت جدا. create_client هر چیزی را که ندهید از محیط میخواند، و Client.new (یا OpenEmail.new) فقط آنچه را میدهید میگیرد. |
| OpenEmail.create_temp_mail | کلاینتی برای صندوقهای یکبارمصرف که هیچ کلید API حمل نمیکند. |
| OpenEmail.verify_webhook_signature | امضای یک تحویل را در زمان ثابت و با پنجرهٔ بازپخش بررسی میکند. رویداد تجزیهشده را برمیگرداند، و در هر شکستی OpenEmail::WebhookSignatureError را raise میکند. |
| OpenEmail.to_base64 | Base64 برای بایتهای پیوست، از یک String دودویی، یک IO یا یک Pathname. |
| OpenEmail.api_key? | اینکه آیا یک String شکل oe_live_ یا oe_test_ را دارد. بررسی شکل است، نه اثبات اینکه کلید هنوز کار میکند. |
| OpenEmail.access_token? | اینکه آیا یک String شکل یک توکن دسترسی OAuth را دارد: 1 تا 512 نویسه، که با oe_ آغاز نمیشود. |
| OpenEmail.sealed? | اینکه آیا بدنهٔ یک پیام متن رمز است. برای دو قالب امضاشده که بدنهشان آشکار رسیده false است. |
| OpenEmail.resolve_language, OpenEmail.language_by_code, OpenEmail.rtl_language? | جستوجوهایی که یک انتخابگر زبان لازم دارد، روی جدول همراهِ OpenEmail::LANGUAGES. |
ثابتها
هر مجموعهمقداری که SDK TypeScript صادر میکند، یک Hash منجمد روی OpenEmail است با همان نامها بهعنوان کلید، پس OpenEmail::WEBHOOK_EVENTS[:EMAIL_DELIVERED] برابر "email.delivered" است. هر جا فهرست را لازم دارید از .values استفاده کنید، و برای بررسی مقداری که از بیرون آمده از .value?.
events = OpenEmail::WEBHOOK_EVENTS.values scopes = [OpenEmail::API_SCOPES[:EMAILS_SEND], OpenEmail::API_SCOPES[:THREADS_READ]] puts events.size, scopes.join(","), OpenEmail::PAGE_LIMITS[:MAX_LIMIT]| ثابت | محتوای آن |
|---|---|
| OpenEmail::VERSION | نسخهٔ gem. |
| OpenEmail::API_SCOPES | واژگان اسکوپها، برای صفحهٔ ساخت کلید. |
| OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERS | رویدادهایی که یک اندپوینت میتواند مشترکشان شود، و نام هدرهایی که یک تحویل با خود دارد. |
| OpenEmail::ERROR_TYPES | واژگان خطا که ApiError#type از آن مقدار میگیرد. |
| OpenEmail::PAGE_LIMITS | بزرگترین و پیشفرضِ limit: در بیشتر فهرستهای صفحهبندیشده: 100 و 25. چند فهرست بیشتر میپذیرند، و مرجع هر متد این را میگوید. |
| OpenEmail::RULE_FIELDS, OpenEmail::RULE_OPERATORS, OpenEmail::RULE_ACTIONS | واژگانی که شرطها و کنشهای یک قاعده از آن ساخته میشوند. |
| OpenEmail::MESSAGE_ENCRYPTION_FORMATS | پنج پاکتی که فرایند دریافت میتواند نام ببرد. سهتای آنها مهرومومشدهاند. |
| OpenEmail::CREDENTIAL_KINDS, OpenEmail::STEP_UP_METHODS, OpenEmail::STEP_UP_ERROR_CODES | اینکه me.get و me.ping کدام اعتبارنامه را توصیف میکنند، کد تأیید هویت چگونه بررسی میشود، و کدهایی که یک تأیید ممکن است با آنها شکست بخورد. |
| OpenEmail::THREAD_SORTS، OpenEmail::PEOPLE_SORTS، OpenEmail::FILE_SORTS و دیگر *_SORTSها | ترتیبهایی که یک فهرست میتواند بر اساس آنها مرتب شود. |
| OpenEmail::FORM_STATUSES، OpenEmail::BROADCAST_STATUSES، OpenEmail::SUPPRESSION_REASONS و دیگر مجموعهها | مقدارهایی که یک فیلد از یک منبع میتواند بگیرد. هر مجموعه به نام چیزی که در خود دارد نامگذاری شده است. |
شیءها
پاسخ، همان JSON تجزیهشده به شکل یک Hash با کلیدهای Symbol است. gem فقط جایی شیئی از آنِ خودش میسازد که به پاسخ شکل میدهد، و هرکدام یک Data تغییرناپذیر است.
| کلاس | آنچه با خود دارد |
|---|---|
| OpenEmail::Page | items، has_more? و next_cursor، از هر list صفحهبندیشده. |
| OpenEmail::PeoplePage | همان بهعلاوهٔ seen، از contacts.list_people. |
| OpenEmail::TempMessagesPage | همان بهعلاوهٔ expires_at، از temp_mail.list_messages. |
| OpenEmail::AddressBookPage, OpenEmail::AddressBook | unrestricted، addresses و domains، از addresses.list (همراه با has_more? و next_cursor) و addresses.list_all. |
| OpenEmail::BatchResult | items، sent و failed، از emails.send_batch. |
| OpenEmail::TemplateSends | items، total، page و page_size، از templates.list_sends. |
| OpenEmail::HttpRequest, OpenEmail::HttpResponse | آنچه یک adapter: دریافت میکند و برمیگرداند. یک درخواست سرآیند Authorization خود را بهصورت [redacted] چاپ میکند. |
هر خطایی که gem عمداً raise میکند از OpenEmail::Error ارث میبرد: ApiError و زیرکلاسهایش، NetworkError و WebhookSignatureError. آرگومان نادرست بهجای آن یک ArgumentError است، چون اشتباهی در کد فراخواننده است نه چیزی برای rescue کردن.
اندپوینتی که این هنوز پوششش نمیدهد
یک انتشار gem هرگز نباید چیزی باشد که میان شما و اندپوینتی که همین حالا کار میکند فاصله بیندازد. client.raw.request یک مسیر و گزینههای کلیدواژهای میگیرد و بدنهٔ تجزیهشده را برمیگرداند، با اعمال اعتبارنامه، URL پایه، مهلت و سیاست تلاش دوبارهٔ کلاینت.
result = client.raw.request( "/something-new", method: :post, query: {dryRun: true}, body: {name: "Invoices"}, repeatable: true) p resultیک GET مانند هر خواندن دیگری دوباره تلاش میشود. هر متد دیگری یک بار فرستاده میشود مگر آنکه repeatable: true بدهید، که یعنی شما تأیید میکنید دو بار فرستادنش بیاشکال است. query: مقدارهای nil یا خالی را کنار میگذارد، و api_key: همانطور کار میکند که در هر متد دیگری.
کارهایی که عمداً انجام نمیدهد
- هیچ بدنهٔ درخواستی را اعتبارسنجی نمیکند. اسکیمای سرور تنها نسخهٔ قواعد است، و نسخهٔ دومی در اینجا سرانجام نشانیای را که سرور تازهتر میپذیرد رد میکرد، در نسخهای که کسی دو سال پیش سنجاقش کرده.
- هیچ وابستگی زمان اجرا ندارد، حتی یک gem برای JSON یا HTTP فراتر از کتابخانهٔ استاندارد.
- پاسخ را فقط به یک شکل تغییر میدهد: آرایهٔ
dataیک مجموعه از پاکتش بیرون کشیده میشود و در یکی از شیءهای بالا قرار میگیرد. هر پاسخ دیگری همانطور که API فرستاده، با کلیدهای camelCase در API، برمیگردد.
بررسی همخوانیِ gem این را صادق نگه میدارد. وقتی یک متد TypeScript همتای Ruby نداشته باشد، گزینههای متفاوتی بگیرد، یا درخواست متفاوتی بفرستد، بیلد را میشکند.