Saltar para a documentação
PHP

Registo de alterações

Todas as versões do pacote, 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: 430 métodos em 41 espaços de nomes, cada um com o seu nome de TypeScript, e cada um deles envia, byte a byte, o pedido que o seu equivalente em TypeScript envia.

  • OpenEmail\OpenEmail tem uma propriedade para cada espaço de nomes, de emails, threads e templates a providerImports, dnsConnections e account, e os métodos de cada um mantêm os seus nomes de TypeScript.
  • O corpo de um pedido é um array associativo cujas chaves mantêm os nomes em camelCase da API, e as opções são argumentos nomeados como idempotencyKey: e apiKey:. Uma resposta volta como o array associativo descodificado.
  • Cada recurso paginado tem list, que devolve uma Page, listAll, que devolve todos os itens como um array, e iterate, que devolve um Generator 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 ApiException ou a sua subclasse para o tipo de erro, com status, type, errorCode, param, docUrl, requestId, retryAfterSeconds, fields e body, e métodos como isValidation() e isStepUpRequired(). A ausência total de resposta lança NetworkException, com isTimeout() quando o prazo expirou. Um erro na própria chamada lança InvalidArgumentException antes de qualquer envio. Todas implementam OpenEmailException.
  • new OpenEmail() e OpenEmail::createClient() leem OPENEMAIL_API_KEY, OPENEMAIL_ACCESS_TOKEN e OPENEMAIL_BASE_URL para tudo o que deixar de fora, e OpenEmail::init(), OpenEmail::getClient() e OpenEmail::resetClient() gerem um único cliente partilhado. OpenEmail::createTempMail() abre caixas descartáveis sem credencial.
  • accessToken: aceita um token de acesso OAuth, ou um invocável que devolva um, chamado antes de cada pedido. Todos os métodos aceitam apiKey: para agir com outra chave numa única chamada, e os métodos de tempMail aceitam inboxToken:. Todos os parâmetros que levam uma credencial estão marcados com #[\SensitiveParameter].
  • OpenEmail::verifyWebhookSignature() verifica uma entrega em tempo constante, recusa uma com mais de cinco minutos e devolve o evento descodificado. Lê a assinatura de um array de cabeçalhos com o nome em maiúsculas ou minúsculas, de $_SERVER, de um header bag do Symfony ou do Laravel, ou de um pedido PSR-7.
  • OpenEmail::toBase64(), isApiKey(), isAccessToken(), isSealed(), resolveLanguage(), languageByCode() e isRtlLanguage() são os auxiliares do SDK de TypeScript, e cada conjunto de valores que a raiz do seu pacote exporta é uma classe em OpenEmail\Constants.
  • Precisa de PHP 8.2 ou superior com as extensões curl e json, e de nada mais. Os pedidos passam por um único handle cURL por cliente, que mantém a sua ligação aberta entre pedidos e abre uma nova depois de pcntl_fork, e timeout: limita uma tentativa inteira. Psr18HttpClient envia-os antes pelo Guzzle, pelo Symfony HttpClient ou por qualquer outro cliente PSR-18.
  • 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 URL base em 0.0.0.0, recusa um cabeçalho que dividiria um pedido e nunca deixa raw->request() sair da origem do URL base.