दस्तावेज़ पर जाएँ
Ruby

सहायक और स्थिरांक

क्लाइंट के अलावा gem और क्या परिभाषित करता है।

मॉड्यूल मेथड

मेथडयह क्या है
OpenEmail.init, OpenEmail.clientसाझा क्लाइंट को एक बार कॉन्फ़िगर करें, फिर उस तक कहीं से भी पहुँचें। अगर init कभी नहीं चला तो यह ख़ुद को OPENEMAIL_API_KEY से बना लेता है।
OpenEmail.emails, OpenEmail.threads और हर दूसरा namespaceसाझा क्लाइंट के namespaces के शॉर्टकट।
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किसी डिलीवरी का सिग्नेचर constant time में, replay विंडो के साथ जाँचता है। पार्स किया गया इवेंट लौटाता है, और किसी भी विफलता पर OpenEmail::WebhookSignatureError raise करता है।
OpenEmail.to_base64अटैचमेंट के बाइट्स के लिए Base64, binary String, IO या Pathname से।
OpenEmail.api_key?क्या किसी String का आकार oe_live_ या oe_test_ वाला है। यह आकार की जाँच है, इस बात का सबूत नहीं कि कुंजी अब भी काम करती है।
OpenEmail.access_token?क्या किसी String का आकार OAuth एक्सेस टोकन जैसा है: 1 से 512 वर्ण, oe_ से शुरू नहीं।
OpenEmail.sealed?क्या संदेश की बॉडी ciphertext है। दो हस्ताक्षरित फ़ॉर्मेट के लिए यह false है, जिनकी बॉडी खुले रूप में आई।
OpenEmail.resolve_language, OpenEmail.language_by_code, OpenEmail.rtl_language?भाषा picker को जिन खोजों की ज़रूरत होती है, साथ आई OpenEmail::LANGUAGES तालिका पर।

स्थिरांक

TypeScript SDK जो भी मान-सेट export करता है वह OpenEmail पर एक frozen Hash है, उन्हीं नामों की कुंजियों के साथ, इसलिए 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::VERSIONgem का वर्शन।
OpenEmail::API_SCOPESscope की शब्दावली, key बनाने वाली स्क्रीन के लिए।
OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERSवे events जिनकी कोई endpoint सदस्यता ले सकता है, और उन header के नाम जो हर delivery लिए चलती है।
OpenEmail::ERROR_TYPESerror शब्दावली जो ApiError#type लेता है।
OpenEmail::PAGE_LIMITSज़्यादातर पेज वाली सूचियों पर सबसे बड़ा और डिफ़ॉल्ट limit:: 100 और 25। कुछ सूचियाँ ज़्यादा लेती हैं, और हर मेथड का संदर्भ यह बताता है।
OpenEmail::RULE_FIELDS, OpenEmail::RULE_OPERATORS, OpenEmail::RULE_ACTIONSवह शब्दावली जिससे किसी rule की शर्तें और actions बनते हैं।
OpenEmail::MESSAGE_ENCRYPTION_FORMATSवे पाँच envelopes जिनके नाम ingest ले सकता है। इनमें से तीन sealed हैं।
OpenEmail::CREDENTIAL_KINDS, OpenEmail::STEP_UP_METHODS, OpenEmail::STEP_UP_ERROR_CODESme.get और me.ping किस क्रेडेंशियल का वर्णन करते हैं, सत्यापन कोड कैसे जाँचा जाता है, और वे कोड जिनसे सत्यापन विफल हो सकता है।
OpenEmail::THREAD_SORTS, OpenEmail::PEOPLE_SORTS, OpenEmail::FILE_SORTS और बाक़ी *_SORTSवे क्रम जिनमें किसी सूची को लगाया जा सकता है।
OpenEmail::FORM_STATUSES, OpenEmail::BROADCAST_STATUSES, OpenEmail::SUPPRESSION_REASONS और बाक़ी सेटवे मान जो किसी resource का फ़ील्ड ले सकता है। हर सेट का नाम उस पर रखा गया है जो उसमें है।

ऑब्जेक्ट

जवाब Symbol कुंजियों वाले Hash के रूप में पार्स किया गया JSON है। 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 जानबूझकर जो भी error raise करता है वह OpenEmail::Error से inherit करती है: ApiError और उसकी subclasses, NetworkError और WebhookSignatureError। ग़लत argument इसकी जगह ArgumentError है, क्योंकि यह rescue करने की चीज़ नहीं, बल्कि कॉल करने वाले कोड की ग़लती है।

ऐसा endpoint जिसे यह अभी नहीं लपेटता

gem की कोई रिलीज़ कभी आपके और पहले से काम कर रहे endpoint के बीच नहीं आनी चाहिए। client.raw.request एक path और keyword विकल्प लेता है और पार्स की गई बॉडी लौटाता है, क्लाइंट के क्रेडेंशियल, बेस URL, टाइमआउट और पुनः प्रयास नीति को लागू करते हुए।

escape_hatch.rb
result = client.raw.request(  "/something-new",  method: :post,  query: {dryRun: true},  body: {name: "Invoices"},  repeatable: true) p result

GET पर किसी भी दूसरे read की तरह पुनः प्रयास होता है। कोई भी दूसरा मेथड एक बार भेजा जाता है जब तक आप repeatable: true पास न करें, जो आपका दावा है कि इसे दो बार भेजा जा सकता है। query: nil या ख़ाली मान छोड़ देता है, और api_key: वैसे ही काम करता है जैसे हर दूसरे मेथड पर।

यह जानबूझकर क्या नहीं करता

  • यह किसी रिक्वेस्ट बॉडी को सत्यापित नहीं करता। सर्वर का schema नियमों की इकलौती प्रति है, और यहाँ दूसरी प्रति आख़िरकार ऐसे पते को अस्वीकार कर देती जिसे नया सर्वर स्वीकार करता है, किसी ऐसे वर्शन में जिसे किसी ने दो साल पहले pin किया था।
  • इसकी कोई रनटाइम निर्भरता नहीं है, मानक लाइब्रेरी से आगे कोई JSON या HTTP gem भी नहीं।
  • यह जवाब को सिर्फ़ एक तरह से बदलता है: किसी collection की data Array को उसके envelope से निकालकर ऊपर के ऑब्जेक्ट में से एक में रखा जाता है। हर दूसरा जवाब वैसा ही लौटता है जैसा API ने भेजा, API की camelCase कुंजियों के साथ।

gem की समानता जाँच इसे ईमानदार रखती है। जब किसी TypeScript मेथड का Ruby जुड़वाँ न हो, वह अलग विकल्प ले, या अलग रिक्वेस्ट भेजे, तो यह build विफल कर देती है।