सहायक और स्थिरांक
क्लाइंट के मेथड के अलावा पैकेज और क्या परिभाषित करता है।
Static मेथड
| मेथड | यह क्या है |
|---|---|
| OpenEmail::init(), OpenEmail::getClient() | साझा क्लाइंट को एक बार कॉन्फ़िगर करें, फिर उसे कहीं से भी इस्तेमाल करें। अगर init कभी नहीं चला तो getClient() एनवायरनमेंट से एक क्लाइंट बनाता है। |
| OpenEmail::resetClient() | साझा क्लाइंट को हटा देता है, ताकि अगला getClient() एक नया क्लाइंट बनाए, जो टेस्ट के मामलों के बीच चाहिए होता है। |
| new OpenEmail(), OpenEmail::createClient() | एक अलग क्लाइंट। दोनों जो कुछ आप छोड़ देते हैं उसे एनवायरनमेंट से पढ़ते हैं। |
| OpenEmail::createTempMail() | डिस्पोज़ेबल इनबॉक्स का क्लाइंट जो कोई API कुंजी नहीं रखता। |
| OpenEmail::verifyWebhookSignature() | delivery के signature को स्थिर समय में जाँचता है, पाँच मिनट की replay अवधि के साथ जिसे toleranceSeconds: बदलता है। डिकोड किया गया event लौटाता है, और किसी भी विफलता पर WebhookSignatureException throw करता है। |
| OpenEmail::toBase64() | अटैचमेंट बाइट्स के लिए Base64, स्ट्रिंग, stream resource, SplFileInfo या PSR-7 stream से। |
| OpenEmail::isApiKey() | कोई मान oe_live_ या oe_test_ आकार का है या नहीं। यह आकार की जाँच है, इस बात का सबूत नहीं कि कुंजी अब भी काम करती है। |
| OpenEmail::isAccessToken() | कोई मान OAuth access टोकन के आकार का है या नहीं: 1 से 512 अक्षर, oe_ से शुरू न होने वाला। |
| OpenEmail::isSealed() | क्या संदेश की बॉडी ciphertext है। दो हस्ताक्षरित फ़ॉर्मेट के लिए यह false है, जिनकी बॉडी खुले रूप में आई। |
| OpenEmail::resolveLanguage(), OpenEmail::languageByCode(), OpenEmail::isRtlLanguage() | language picker को जिन lookups की ज़रूरत होती है, साथ आई Languages::ALL तालिका पर। |
| $client->close() | क्लाइंट का cURL handle और उसके पीछे का कनेक्शन छोड़ देता है। जिस क्लाइंट का अब कोई reference नहीं है, PHP द्वारा उसे मुक्त करने पर वह भी यही करता है। |
स्थिरांक
TypeScript SDK द्वारा export किया गया हर मान समूह OpenEmail\Constants में एक final क्लास है, जिसमें हर सदस्य के लिए उसी नाम का एक constant है, इसलिए WebhookEvents::EMAIL_DELIVERED का मान email.delivered है। values() पूरा समूह लौटाता है, और बाहर से आए मान को जाँचने का तरीक़ा भी यही है।
use OpenEmail\Constants\ApiScopes;use OpenEmail\Constants\PageLimits;use OpenEmail\Constants\WebhookEvents; $events = WebhookEvents::values(); $scopes = [ApiScopes::EMAILS_SEND, ApiScopes::THREADS_READ]; $known = in_array('email.delivered', $events, true); echo count($events), ' ', implode(',', $scopes), ' ', PageLimits::MAX_LIMIT, ' ', $known ? 'known' : 'unknown', PHP_EOL;| स्थिरांक | इसमें क्या है |
|---|---|
| OpenEmail::VERSION | पैकेज का संस्करण। |
| ApiScopes | scope की शब्दावली, key बनाने वाली स्क्रीन के लिए। |
| WebhookEvents, WebhookSignatureHeaders | वे events जिनकी कोई endpoint सदस्यता ले सकता है, और उन header के नाम जो हर delivery लिए चलती है। |
| ErrorTypes | error शब्दावली जो ApiException::$type लेता है। |
| PageLimits | ज़्यादातर पेज होने वाली सूचियों पर सबसे बड़ा और डिफ़ॉल्ट limit:, MAX_LIMIT और DEFAULT_LIMIT: 100 और 25। कुछ सूचियाँ इससे ज़्यादा लेती हैं, और हर मेथड का संदर्भ यह बताता है। |
| RuleFields, RuleOperators, RuleActions | वह शब्दावली जिससे किसी rule की शर्तें और actions बनते हैं। |
| MessageEncryptionFormats | वे पाँच envelopes जिनके नाम ingest ले सकता है। इनमें से तीन sealed हैं। |
| CredentialKinds, StepUpMethods, StepUpErrorCodes | me->get और me->ping किस क्रेडेंशियल का वर्णन करते हैं, सत्यापन कोड कैसे जाँचा जाता है, और वे कोड जिनसे सत्यापन विफल हो सकता है। |
| ThreadSorts, PeopleSorts, FileSorts और बाक़ी *Sorts | वे क्रम जिनमें किसी सूची को लगाया जा सकता है। |
| FormStatuses, BroadcastStatuses, SuppressionReasons और बाक़ी सेट | वे मान जो किसी resource का फ़ील्ड ले सकता है। हर सेट का नाम उस पर रखा गया है जो उसमें है। |
| Languages::ALL | हर वह भाषा जिसे अनुवादित send या preview स्वीकार करता है, उसके कोड, उसके नामों और उसकी दिशा के साथ। |
ऑब्जेक्ट
जवाब डिकोड किया गया JSON है, एक associative array के रूप में। पैकेज अपना ऑब्जेक्ट सिर्फ़ वहाँ बनाता है जहाँ वह जवाब को आकार देता है, और हर एक OpenEmail\Result में रहता है, अपरिवर्तनीय है, और अपनी पंक्तियों पर IteratorAggregate और Countable है।
| क्लास | इसमें क्या होता है |
|---|---|
| Page | items, hasMore और nextCursor, हर पेज वाले list से। |
| PeoplePage | वही, साथ में seen, contacts->listPeople से। |
| TempMessagesPage | वही, साथ में expiresAt, tempMail->listMessages से। |
| AddressBookPage, AddressBook | unrestricted, addresses और domains, addresses->list (hasMore और nextCursor के साथ) और addresses->listAll से। |
| BatchResult | items, sent और failed, emails->sendBatch से। |
| TemplateSends | items, total, page और pageSize, templates->listSends से। |
| OpenEmail\Http\HttpRequest, OpenEmail\Http\HttpResponse | httpClient: क्या पाता है और क्या लौटाता है। var_dump(), print_r() और json_encode() रिक्वेस्ट का Authorization हेडर [redacted] के रूप में दिखाते हैं, जबकि var_export() और Symfony का dump() उसे जैसा है वैसा दिखाते हैं। |
पैकेज द्वारा throw होने वाला हर exception OpenEmail\Exception\OpenEmailException को implement करता है: ApiException और उसकी subclasses, NetworkException, WebhookSignatureException और InvalidArgumentException, जो API के कहे किसी चीज़ के बजाय ख़ुद कॉल की ग़लती पर throw होता है।
ऐसा endpoint जिसे यह अभी नहीं लपेटता
पैकेज की कोई रिलीज़ कभी आपके और पहले से काम कर रहे endpoint के बीच नहीं आनी चाहिए। $client->raw->request() एक path और named आर्ग्युमेंट लेता है और डिकोड की गई बॉडी लौटाता है, क्लाइंट के क्रेडेंशियल, बेस URL, टाइमआउट और retry नीति को लागू करते हुए।
$result = $client->raw->request( '/labels', method: 'POST', query: ['dryRun' => true], body: ['name' => 'Invoices'], repeatable: true,); var_dump($result);GET को किसी भी दूसरे read की तरह retry किया जाता है। कोई भी दूसरा मेथड एक बार भेजा जाता है, जब तक आप repeatable: true पास न करें, जो आपका यह दावा है कि इसे दो बार भेजा जा सकता है। query: null या ख़ाली मानों को छोड़ देता है, और apiKey: वैसे ही काम करता है जैसे हर दूसरे मेथड पर।
यह जानबूझकर क्या नहीं करता
- यह किसी रिक्वेस्ट बॉडी को सत्यापित नहीं करता। सर्वर का schema नियमों की इकलौती प्रति है, और यहाँ दूसरी प्रति आख़िरकार ऐसे पते को अस्वीकार कर देती जिसे नया सर्वर स्वीकार करता है, किसी ऐसे वर्शन में जिसे किसी ने दो साल पहले pin किया था।
- curl और json एक्सटेंशन के अलावा इसकी कोई रनटाइम निर्भरता नहीं है। PSR-18 क्लाइंट एक विकल्प है, कभी ज़रूरत नहीं।
- यह जवाब को सिर्फ़ एक तरह से बदलता है: किसी collection की
dataArray को उसके envelope से निकालकर ऊपर के ऑब्जेक्ट में से एक में रखा जाता है। हर दूसरा जवाब वैसा ही लौटता है जैसा API ने भेजा, API की camelCase कुंजियों के साथ।
पैकेज की parity जाँच इसे सच्चा रखती है। यह build को तब विफल करती है जब किसी TypeScript मेथड का कोई PHP जुड़वाँ न हो, वह अलग आर्ग्युमेंट ले, या अलग रिक्वेस्ट भेजे।