پرش به مستندات
Ruby

کمکی‌ها و ثابت‌ها

آنچه 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_base64Base64 برای بایت‌های پیوست، از یک 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?.

constants.rb
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::Pageitems، has_more? و next_cursor، از هر list صفحه‌بندی‌شده.
OpenEmail::PeoplePageهمان به‌علاوهٔ seen، از contacts.list_people.
OpenEmail::TempMessagesPageهمان به‌علاوهٔ expires_at، از temp_mail.list_messages.
OpenEmail::AddressBookPage, OpenEmail::AddressBookunrestricted، addresses و domains، از addresses.list (همراه با has_more? و next_cursor) و addresses.list_all.
OpenEmail::BatchResultitems، sent و failed، از emails.send_batch.
OpenEmail::TemplateSendsitems، 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 پایه، مهلت و سیاست تلاش دوبارهٔ کلاینت.

escape_hatch.rb
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 نداشته باشد، گزینه‌های متفاوتی بگیرد، یا درخواست متفاوتی بفرستد، بیلد را می‌شکند.