Ir a la documentación
Ruby

Registro de cambios

Todas las versiones de la gema, de la más reciente a la más antigua.

0.0.1

La primera versión. Cubre todo el SDK de TypeScript tal como estaba cuando se publicó esta versión, 0.0.8 más los cambios previstos después: 430 métodos en 41 espacios de nombres, cada uno con el nombre de TypeScript en snake_case, y cada uno de ellos envía, byte a byte, la solicitud que envía su gemelo de TypeScript.

  • OpenEmail::Client tiene un lector para cada espacio de nombres, desde emails, threads y templates hasta provider_imports, dns_connections y account. listAll pasa a ser list_all, getActive pasa a ser get_active y tempMail pasa a ser temp_mail.
  • Un cuerpo de solicitud se pasa como argumentos nombrados o como un solo Hash, y sus claves conservan los nombres en camelCase de la API. Una respuesta vuelve como un Hash con claves Symbol.
  • Cada recurso paginado tiene list, que devuelve una OpenEmail::Page, list_all, que devuelve todos los elementos como un Array, e iterate, que pasa cada elemento a un bloque o devuelve un Enumerator que solo obtiene la página siguiente cuando llega a ella. PeoplePage, TempMessagesPage, AddressBookPage, AddressBook, BatchResult y TemplateSends llevan las respuestas que contienen algo más que una lista.
  • Un rechazo de la API lanza OpenEmail::ApiError o su subclase para el tipo de error, con status, type, code, param, doc_url, request_id, retry_after_seconds, fields y body, y predicados como validation? y step_up_required?. La falta total de respuesta lanza OpenEmail::NetworkError, con timeout? cuando venció el plazo. Un error en la propia llamada lanza ArgumentError antes de enviar nada.
  • OpenEmail.create_client construye un cliente a partir de OPENEMAIL_API_KEY, OPENEMAIL_ACCESS_TOKEN y OPENEMAIL_BASE_URL, y OpenEmail.init, OpenEmail.client y OpenEmail.reset_client gestionan un cliente compartido a través del cual acceden OpenEmail.emails y todos los demás espacios de nombres. OpenEmail.create_temp_mail abre buzones desechables sin credencial.
  • access_token: acepta un token de acceso OAuth, o cualquier objeto que responda a call y devuelva uno, invocado antes de cada solicitud. Cada método acepta api_key: para actuar con otra clave en una sola llamada, y los métodos de temp_mail aceptan inbox_token:.
  • OpenEmail.verify_webhook_signature comprueba una entrega en tiempo constante, rechaza una con más de cinco minutos de antigüedad y devuelve el evento analizado. Lee la firma de un Hash con cualquier combinación de mayúsculas y minúsculas, de un env de Rack o de los request.headers de Rails.
  • OpenEmail.to_base64, api_key?, access_token?, sealed?, resolve_language, language_by_code y rtl_language? son las utilidades del SDK de TypeScript, y cada conjunto de valores que exporta la raíz de su paquete es un Hash congelado en OpenEmail.
  • No tiene dependencias en tiempo de ejecución. Las solicitudes pasan por Net::HTTP con un pool de conexiones persistentes que un cliente comparte entre hilos de ejecución y reconstruye tras un fork, y timeout: acota un intento completo.
  • Las lecturas, los envíos y cada escritura que se puede repetir sin riesgo se reintentan ante un 408, 500, 502, 503 y 504 con backoff, y ante un 429 solo cuando su Retry-After es de un minuto o menos. Cada envío lleva una clave de idempotencia que reutilizan sus reintentos.
  • El cliente se niega a enviar una credencial por http: sin cifrar a cualquier cosa que no sea esta máquina, rechaza una base_url en 0.0.0.0, rechaza una cabecera que partiría una solicitud y nunca deja que raw.request salga del origen de la URL base.