Utilitaires et constantes
Ce que la gem définit d'autre en plus du client.
Méthodes de module
| Méthode | Ce que c'est |
|---|---|
| OpenEmail.init, OpenEmail.client | Configurez le client partagé une fois, puis accédez-y de n'importe où. Il se construit tout seul à partir de OPENEMAIL_API_KEY si init n'a jamais été appelé. |
| OpenEmail.emails, OpenEmail.threads et tous les autres espaces de noms | Des raccourcis vers les espaces de noms du client partagé. |
| OpenEmail.reset_client | Abandonne le client partagé, pour que l'appel suivant en construise un neuf, ce qu'un test veut entre deux cas. |
| OpenEmail.create_client, OpenEmail::Client.new, OpenEmail.new | Un client distinct. create_client lit l'environnement pour tout ce que vous omettez, et Client.new (ou OpenEmail.new) ne prend que ce que vous lui passez. |
| OpenEmail.create_temp_mail | Un client de boîte jetable qui ne porte aucune clé API. |
| OpenEmail.verify_webhook_signature | Vérifie la signature d'une livraison en temps constant, avec une fenêtre de rejeu. Renvoie l'événement analysé, et lève OpenEmail::WebhookSignatureError en cas d'échec. |
| OpenEmail.to_base64 | Le Base64 des octets d'une pièce jointe, à partir d'une String binaire, d'un IO ou d'un Pathname. |
| OpenEmail.api_key? | Indique si une String a la forme oe_live_ ou oe_test_. Une vérification de forme, pas une preuve que la clé fonctionne encore. |
| OpenEmail.access_token? | Indique si une String a la forme d'un jeton d'accès OAuth : de 1 à 512 caractères, sans commencer par oe_. |
| OpenEmail.sealed? | Indique si le corps d'un message est du chiffré. Vaut false pour les deux formats signés, dont les corps sont arrivés en clair. |
| OpenEmail.resolve_language, OpenEmail.language_by_code, OpenEmail.rtl_language? | Les fonctions de recherche dont un sélecteur de langue a besoin, sur la table OpenEmail::LANGUAGES intégrée. |
Constantes
Chaque ensemble de valeurs qu'exporte le SDK TypeScript est un Hash gelé sur OpenEmail, avec les mêmes noms pour clés : OpenEmail::WEBHOOK_EVENTS[:EMAIL_DELIVERED] vaut donc "email.delivered". Utilisez .values quand vous avez besoin de la liste, et .value? pour vérifier une valeur venue de l'extérieur.
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]| Constante | Ce qu'il contient |
|---|---|
| OpenEmail::VERSION | La version de la gem. |
| OpenEmail::API_SCOPES | Le vocabulaire des portées, pour un écran de création de clé. |
| OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERS | Les événements auxquels un endpoint peut s'abonner, et les noms des en-têtes que porte une livraison. |
| OpenEmail::ERROR_TYPES | Le vocabulaire d'erreurs que prend ApiError#type. |
| OpenEmail::PAGE_LIMITS | Le limit: maximal et par défaut de la plupart des listes paginées : 100 et 25. Quelques listes acceptent davantage, et la référence de chaque méthode l'indique. |
| OpenEmail::RULE_FIELDS, OpenEmail::RULE_OPERATORS, OpenEmail::RULE_ACTIONS | Le vocabulaire à partir duquel se construisent les conditions et les actions d'une règle. |
| OpenEmail::MESSAGE_ENCRYPTION_FORMATS | Les cinq enveloppes que l'ingestion peut nommer. Trois d'entre elles sont scellées. |
| OpenEmail::CREDENTIAL_KINDS, OpenEmail::STEP_UP_METHODS, OpenEmail::STEP_UP_ERROR_CODES | Quel identifiant décrivent me.get et me.ping, comment un code de vérification est contrôlé, et les codes avec lesquels une vérification peut échouer. |
| OpenEmail::THREAD_SORTS, OpenEmail::PEOPLE_SORTS, OpenEmail::FILE_SORTS et les autres *_SORTS | Les ordres dans lesquels une liste peut être triée. |
| OpenEmail::FORM_STATUSES, OpenEmail::BROADCAST_STATUSES, OpenEmail::SUPPRESSION_REASONS et les autres ensembles | Les valeurs que peut prendre un champ d'une ressource. Chaque ensemble est nommé d'après ce qu'il contient. |
Objets
Une réponse est le JSON analysé, sous forme de Hash à clés Symbol. La gem ne construit son propre objet que là où elle façonne la réponse, et chacun est un Data immuable.
| Classe | Ce qu'il contient |
|---|---|
| OpenEmail::Page | items, has_more? et next_cursor, renvoyés par chaque list paginé. |
| OpenEmail::PeoplePage | Les mêmes, plus seen, renvoyés par contacts.list_people. |
| OpenEmail::TempMessagesPage | Les mêmes, plus expires_at, renvoyés par temp_mail.list_messages. |
| OpenEmail::AddressBookPage, OpenEmail::AddressBook | unrestricted, addresses et domains, renvoyés par addresses.list (avec has_more? et next_cursor) et addresses.list_all. |
| OpenEmail::BatchResult | items, sent et failed, renvoyés par emails.send_batch. |
| OpenEmail::TemplateSends | items, total, page et page_size, renvoyés par templates.list_sends. |
| OpenEmail::HttpRequest, OpenEmail::HttpResponse | Ce qu'un adapter: reçoit et renvoie. Une requête affiche son en-tête Authorization sous la forme [redacted]. |
Chaque erreur que la gem lève volontairement hérite d'OpenEmail::Error : ApiError et ses sous-classes, NetworkError et WebhookSignatureError. Un argument incorrect donne plutôt une ArgumentError, car c'est une erreur dans le code appelant et non quelque chose à intercepter.
Un endpoint que ceci n'encapsule pas encore
Une version de la gem ne devrait jamais s'interposer entre vous et un endpoint qui fonctionne déjà. client.raw.request prend un chemin et des options en mots-clés, et renvoie le corps analysé, en appliquant l'identifiant, l'URL de base, le délai d'expiration et la politique de réessai du client.
result = client.raw.request( "/something-new", method: :post, query: {dryRun: true}, body: {name: "Invoices"}, repeatable: true) p resultUn GET est réessayé comme n'importe quelle lecture. Toute autre méthode n'est envoyée qu'une fois, sauf si vous passez repeatable: true, qui est votre affirmation qu'elle peut être envoyée deux fois. query: ignore les valeurs nil ou vides, et api_key: fonctionne comme sur toutes les autres méthodes.
Ce qu'il ne fait délibérément pas
- Elle ne valide aucun corps de requête. Le schéma du serveur est l'unique copie des règles, et une seconde copie ici finirait par refuser une adresse qu'un serveur plus récent accepte, dans une version que quelqu'un a épinglée deux ans plus tôt.
- Elle n'a aucune dépendance d'exécution, pas même une gem JSON ou HTTP en dehors de la bibliothèque standard.
- Elle ne remanie une réponse que d'une seule façon : le tableau
datad'une collection est sorti de son enveloppe et placé dans l'un des objets ci-dessus. Toute autre réponse revient telle que l'API l'a envoyée, avec les clés camelCase de l'API.
Le contrôle de parité de la gem garantit tout cela. Il fait échouer le build quand une méthode TypeScript n'a pas de jumelle Ruby, prend des options différentes ou envoie une requête différente.