Helfer und Konstanten
Was das Gem neben dem Client noch definiert.
Modulmethoden
| Methode | Was es ist |
|---|---|
| OpenEmail.init, OpenEmail.client | Konfigurieren Sie den gemeinsamen Client einmal und erreichen Sie ihn dann von überall. Er baut sich aus OPENEMAIL_API_KEY selbst, wenn init nie gelaufen ist. |
| OpenEmail.emails, OpenEmail.threads und jeder andere Namespace | Abkürzungen zu den Namespaces des gemeinsamen Clients. |
| OpenEmail.reset_client | Verwirft den gemeinsamen Client, sodass der nächste Aufruf einen neuen erzeugt, genau das braucht ein Test zwischen zwei Fällen. |
| OpenEmail.create_client, OpenEmail::Client.new, OpenEmail.new | Ein separater Client. create_client liest alles, was Sie weglassen, aus der Umgebung, und Client.new (oder OpenEmail.new) nimmt nur das, was Sie übergeben. |
| OpenEmail.create_temp_mail | Ein Client für Wegwerf-Postfächer, der keinen API-Schlüssel trägt. |
| OpenEmail.verify_webhook_signature | Prüft die Signatur einer Zustellung in konstanter Zeit, mit einem Replay-Fenster. Gibt das geparste Event zurück und löst bei jedem Fehlschlag OpenEmail::WebhookSignatureError aus. |
| OpenEmail.to_base64 | Base64 für die Bytes von Anhängen, aus einem binären String, einem IO oder einem Pathname. |
| OpenEmail.api_key? | Ob ein String die Form oe_live_ oder oe_test_ hat. Eine Prüfung der Form, kein Beweis, dass der Schlüssel noch funktioniert. |
| OpenEmail.access_token? | Ob ein String die Form eines OAuth-Zugriffstokens hat: 1 bis 512 Zeichen, nicht mit oe_ beginnend. |
| OpenEmail.sealed? | Ob der Body einer Nachricht Ciphertext ist. false bei den beiden signierten Formaten, deren Bodys im Klartext eingegangen sind. |
| OpenEmail.resolve_language, OpenEmail.language_by_code, OpenEmail.rtl_language? | Die Abfragen, die ein Sprachauswahlfeld braucht, über die mitgelieferte Tabelle OpenEmail::LANGUAGES. |
Konstanten
Jede Wertemenge, die das TypeScript-SDK exportiert, ist ein eingefrorener Hash auf OpenEmail mit denselben Namen als Schlüsseln, OpenEmail::WEBHOOK_EVENTS[:EMAIL_DELIVERED] ist also "email.delivered". Verwenden Sie .values, wo Sie die Liste brauchen, und .value?, um einen Wert zu prüfen, der von außen kam.
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]| Konstante | Was sie enthält |
|---|---|
| OpenEmail::VERSION | Die Version des Gems. |
| OpenEmail::API_SCOPES | Das Scope-Vokabular, für einen Bildschirm zum Anlegen von Keys. |
| OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERS | Die Events, die ein Endpunkt abonnieren kann, und die Namen der Header, die eine Zustellung mitführt. |
| OpenEmail::ERROR_TYPES | Das Fehlervokabular, das ApiError#type annimmt. |
| OpenEmail::PAGE_LIMITS | Das größte und das standardmäßige limit: bei den meisten Listen mit Seiten: 100 und 25. Einige Listen nehmen mehr, und die Referenz jeder Methode sagt das. |
| OpenEmail::RULE_FIELDS, OpenEmail::RULE_OPERATORS, OpenEmail::RULE_ACTIONS | Das Vokabular, aus dem die Bedingungen und Aktionen einer Regel aufgebaut werden. |
| OpenEmail::MESSAGE_ENCRYPTION_FORMATS | Die fünf Umschläge, die die Eingangsverarbeitung benennen kann. Drei davon sind versiegelt. |
| OpenEmail::CREDENTIAL_KINDS, OpenEmail::STEP_UP_METHODS, OpenEmail::STEP_UP_ERROR_CODES | Welchen Zugang me.get und me.ping beschreiben, wie ein Bestätigungscode geprüft wird und die Codes, mit denen eine Bestätigung scheitern kann. |
| OpenEmail::THREAD_SORTS, OpenEmail::PEOPLE_SORTS, OpenEmail::FILE_SORTS und die anderen *_SORTS | Die Reihenfolgen, nach denen eine Liste sortiert werden kann. |
| OpenEmail::FORM_STATUSES, OpenEmail::BROADCAST_STATUSES, OpenEmail::SUPPRESSION_REASONS und die anderen Mengen | Die Werte, die ein Feld einer Ressource annehmen kann. Jede Menge ist nach dem benannt, was sie enthält. |
Objekte
Eine Antwort ist das geparste JSON als Hash mit Symbol-Schlüsseln. Das Gem baut nur dort ein eigenes Objekt, wo es die Antwort formt, und jedes ist ein unveränderliches Data.
| Klasse | Was es trägt |
|---|---|
| OpenEmail::Page | items, has_more? und next_cursor, aus jedem list mit Seiten. |
| OpenEmail::PeoplePage | Dasselbe plus seen, aus contacts.list_people. |
| OpenEmail::TempMessagesPage | Dasselbe plus expires_at, aus temp_mail.list_messages. |
| OpenEmail::AddressBookPage, OpenEmail::AddressBook | unrestricted, addresses und domains, aus addresses.list (mit has_more? und next_cursor) und addresses.list_all. |
| OpenEmail::BatchResult | items, sent und failed, aus emails.send_batch. |
| OpenEmail::TemplateSends | items, total, page und page_size, aus templates.list_sends. |
| OpenEmail::HttpRequest, OpenEmail::HttpResponse | Was ein adapter: empfängt und zurückgibt. Eine Anfrage gibt ihren Authorization-Header als [redacted] aus. |
Jeder Fehler, den das Gem absichtlich auslöst, erbt von OpenEmail::Error: ApiError und seine Unterklassen, NetworkError und WebhookSignatureError. Ein falsches Argument ist stattdessen ein ArgumentError, weil es ein Fehler im aufrufenden Code ist und nichts, was man abfangen sollte.
Ein Endpunkt, den dies noch nicht kapselt
Ein Release des Gems sollte nie das sein, was zwischen Ihnen und einem Endpunkt steht, der bereits funktioniert. client.raw.request nimmt einen Pfad und Keyword-Optionen und gibt den geparsten Body zurück, mit den Zugangsdaten, der Basis-URL, dem Timeout und den Wiederholungsregeln des Clients.
result = client.raw.request( "/something-new", method: :post, query: {dryRun: true}, body: {name: "Invoices"}, repeatable: true) p resultEin GET wird wie jeder andere Lesevorgang wiederholt. Jede andere Methode wird einmal gesendet, sofern Sie nicht repeatable: true übergeben, womit Sie zusichern, dass sie zweimal gesendet werden darf. query: überspringt Werte, die nil oder leer sind, und api_key: funktioniert wie bei jeder anderen Methode.
Was es bewusst nicht tut
- Es validiert keinen Request-Body. Das Schema des Servers ist die einzige Kopie der Regeln, und eine zweite Kopie hier würde irgendwann eine Adresse ablehnen, die ein neuerer Server akzeptiert, in einer Version, die jemand vor zwei Jahren festgeschrieben hat.
- Es hat keine Laufzeitabhängigkeiten, nicht einmal ein JSON- oder HTTP-Gem über die Standardbibliothek hinaus.
- Es formt eine Antwort nur auf eine Weise um: Das
data-Array einer Sammlung wird aus seinem Umschlag in eines der Objekte oben herausgelöst. Jede andere Antwort kommt so zurück, wie die API sie gesendet hat, mit den camelCase-Schlüsseln der API.
Die Paritätsprüfung des Gems sorgt dafür, dass das stimmt. Sie lässt den Build fehlschlagen, wenn eine TypeScript-Methode kein Ruby-Gegenstück hat, andere Optionen nimmt oder eine andere Anfrage sendet.