Bom dia pessoal. Estou em busca de estagio, e estou participando de uma seleção. Na fase em que estou, eles pediram para desenvolver uma api com lumen. Eu nunca trabalhei com isso, e nao faço ideia de onde partir, de onde começar Gostaria se alguém aqui pode me dar um norte, me direcionar um caminho. Vou deixar a descrição do projeto abaixo. Só se puderem mesmo, sei que nao tem esse curso aqui no alura. Abraços
Precisamos que desenvolva uma API simples que basicamente irá receber listas de emails, validar os endereços e salvar os válidos em arquivos, depois simular um envio de email para os endereços salvos. Não haverá banco de dados neste projeto, tudo deverá ser salvo em arquivos de texto.
O projeto deve ser implementado usando Lumen; Deverá existir uma rota /emails/add/ que receberá um post com apenas um campo “emails”, contendo uma lista de emails (exemplo); Esta rota deverá separar os emails e validar cada um deles; Os emails válidos deverão ser incluídos no arquivo /emails.txt, onde não deverão se repetir; Adicionalmente, para cada post recebido deverá ser criado um arquivo /emails_{timestamp}.txt, onde ficarão os emails válidos por ordem alfabética, recebidos naquele momento/timestamp; Deverá existir uma rota /emails/send/ que receberá um post contendo “subject” e “body“; Nesta rota a API deverá simular o envio do email com o assunto e conteúdo recebidos pelo post (subject e body) para todos os endereços de email.txt (como descrito abaixo); Após o envio simulado para todos os emails, a rota deverá retornar um JSON com as seguintes informações: {emails: X, emails_sent: Y, emails_fail: Z} informando as respectivas quantidades; A classe Email: Deverá existir uma classe Email (não pode ser a mesma do controller) com um método estático filter, que recebe uma string e retorna um array de emails; Na classe Email deverá existir um segundo método estático sort, que recebe um array de emails e retorna o array por ordem alfabética; Deverá existir um método de instância send() que irá realizar o envio simulado daquele email. Envio simulado dos emails Não é necessário enviar nenhum email usando SMTP, vamos apenas simular que alguns foram enviados ou não, registrar isso e retornar para o utilizador.
Instalar o pacote fzaninotto/Faker; Para o envio, para cada email da lista de emails criar uma nova instância de Email usando $email = new Email($enderecoEmail); Cada instância e Email irá simular um envio chamando o método $email->send() que deverá ser implementado; O método send deverá chamar $faker->boolean que irá “sortear” (true ou false), para simular que o email foi enviado ou não; Caso o email seja enviado, usar monolog para adicionar um registro em sent.log contendo a hora, endereço e assunto; Caso não seja enviado, adicionar um registro em fail.log contendo a hora, endereço e assunto;