Saltar para a documentação
Ruby

Registo de alterações

Todas as versões da gem, da mais recente para a mais antiga.

0.0.1

A primeira versão. Abrange todo o SDK de TypeScript tal como estava quando esta versão foi lançada, a 0.0.8 mais as alterações em fila depois dela: 430 métodos em 41 espaços de nomes, cada um com o nome de TypeScript em snake_case, e cada um deles envia, byte a byte, o pedido que o seu equivalente em TypeScript envia.

  • OpenEmail::Client tem um leitor para cada espaço de nomes, de emails, threads e templates a provider_imports, dns_connections e account. listAll é list_all, getActive é get_active e tempMail é temp_mail.
  • Um corpo de pedido é passado como argumentos nomeados ou como um único Hash, e as suas chaves mantêm os nomes em camelCase da API. Uma resposta volta como um Hash com chaves Symbol.
  • Cada recurso paginado tem list, que devolve uma OpenEmail::Page, list_all, que devolve todos os itens como um Array, e iterate, que passa cada item a um bloco ou devolve um Enumerator que só obtém a página seguinte quando lá chega. PeoplePage, TempMessagesPage, AddressBookPage, AddressBook, BatchResult e TemplateSends transportam as respostas que contêm mais do que uma lista.
  • Uma recusa da API lança OpenEmail::ApiError ou a sua subclasse para o tipo de erro, com status, type, code, param, doc_url, request_id, retry_after_seconds, fields e body, e predicados como validation? e step_up_required?. A ausência total de resposta lança OpenEmail::NetworkError, com timeout? quando o prazo expirou. Um erro na própria chamada lança ArgumentError antes de qualquer envio.
  • OpenEmail.create_client constrói um cliente a partir de OPENEMAIL_API_KEY, OPENEMAIL_ACCESS_TOKEN e OPENEMAIL_BASE_URL, e OpenEmail.init, OpenEmail.client e OpenEmail.reset_client gerem um único cliente partilhado, pelo qual passam OpenEmail.emails e todos os outros espaços de nomes. OpenEmail.create_temp_mail abre caixas descartáveis sem credencial.
  • access_token: aceita um token de acesso OAuth, ou qualquer objeto que responda a call e devolva um, chamado antes de cada pedido. Todos os métodos aceitam api_key: para agir com outra chave numa única chamada, e os métodos de temp_mail aceitam inbox_token:.
  • OpenEmail.verify_webhook_signature verifica uma entrega em tempo constante, recusa uma com mais de cinco minutos e devolve o evento analisado. Lê a assinatura de um Hash com o nome do cabeçalho em maiúsculas ou minúsculas, de um env do Rack ou do request.headers do Rails.
  • OpenEmail.to_base64, api_key?, access_token?, sealed?, resolve_language, language_by_code e rtl_language? são os auxiliares do SDK de TypeScript, e cada conjunto de valores que a raiz do seu pacote exporta é um Hash congelado em OpenEmail.
  • Não tem dependências em tempo de execução. Os pedidos passam pelo Net::HTTP com um pool de ligações persistentes que um mesmo cliente partilha entre threads e reconstrói depois de um fork, e timeout: limita uma tentativa inteira.
  • As leituras, os envios e todas as escritas que é seguro repetir são repetidos perante um 408, 500, 502, 503 ou 504, com espera progressiva, e perante um 429 apenas quando o seu Retry-After é de um minuto ou menos. Cada envio leva uma chave de idempotência que as suas repetições reutilizam.
  • O cliente recusa enviar uma credencial por http: simples para outro destino que não esta máquina, recusa um base_url em 0.0.0.0, recusa um cabeçalho que dividiria um pedido e nunca deixa raw.request sair da origem do URL base.