Aller à la documentation
Ruby

Utilitaires et constantes

Ce que la gem définit d'autre en plus du client.

Méthodes de module

MéthodeCe que c'est
OpenEmail.init, OpenEmail.clientConfigurez 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 nomsDes raccourcis vers les espaces de noms du client partagé.
OpenEmail.reset_clientAbandonne 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.newUn 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_mailUn client de boîte jetable qui ne porte aucune clé API.
OpenEmail.verify_webhook_signatureVé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_base64Le 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.

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]
ConstanteCe qu'il contient
OpenEmail::VERSIONLa version de la gem.
OpenEmail::API_SCOPESLe vocabulaire des portées, pour un écran de création de clé.
OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERSLes événements auxquels un endpoint peut s'abonner, et les noms des en-têtes que porte une livraison.
OpenEmail::ERROR_TYPESLe vocabulaire d'erreurs que prend ApiError#type.
OpenEmail::PAGE_LIMITSLe 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_ACTIONSLe vocabulaire à partir duquel se construisent les conditions et les actions d'une règle.
OpenEmail::MESSAGE_ENCRYPTION_FORMATSLes 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_CODESQuel 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 *_SORTSLes ordres dans lesquels une liste peut être triée.
OpenEmail::FORM_STATUSES, OpenEmail::BROADCAST_STATUSES, OpenEmail::SUPPRESSION_REASONS et les autres ensemblesLes 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.

ClasseCe qu'il contient
OpenEmail::Pageitems, has_more? et next_cursor, renvoyés par chaque list paginé.
OpenEmail::PeoplePageLes mêmes, plus seen, renvoyés par contacts.list_people.
OpenEmail::TempMessagesPageLes mêmes, plus expires_at, renvoyés par temp_mail.list_messages.
OpenEmail::AddressBookPage, OpenEmail::AddressBookunrestricted, addresses et domains, renvoyés par addresses.list (avec has_more? et next_cursor) et addresses.list_all.
OpenEmail::BatchResultitems, sent et failed, renvoyés par emails.send_batch.
OpenEmail::TemplateSendsitems, total, page et page_size, renvoyés par templates.list_sends.
OpenEmail::HttpRequest, OpenEmail::HttpResponseCe 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.

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

Un 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 data d'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.