Реализуйте небольшой API на фреймворке lumen.
В API должно быть два метода, которые позволяют подтвердить владение email-ящиком:
sendCode(email)
- генерация и отправка секретного кода на указанный email;checkCode(email, code)
- сверка указанного кода с тем, что был ранее отправлен на указанный email.
Общие требования к секретному коду:
- Код - это строка из 4-ех символов, каждый из которых является цифрой;
- Время жизни кода: 5 минут;
- Код не может отправляться на один и тот-же email более 5 раз в течение 1 часа;
- Код не может отправляться на один и тот-же email более 1 раза в 5 минут;
- После успешной генерации нового кода (вызов sendCode), предыдущий, если он был, инвалидируется;
- После трех неуспешных попыток проверить код (вызов checkCode) код инвалидируется;
- После успешной проверки кода он инвалидируется;
- После успешной проверки кода все счетчики ограничений по отправке кода для данного email обнуляются.
Входящие аргументы вызовов должны передаваться в GET-аргументах:
/sendCode?email=<email>
/checkCode?email=<email>&code=<code>
Ответы вызовов должны быть в формате json: Успех:
{"status":"success"}
Ошибка:
{"status":"error","message":"<текстовое описание ошибки>"}
(опционально) Напишите спецификацию на разработанный API.
Как результат выполнения задания пришлите:
- ссылку на git-репозиторий проекта, или архив с ним;
- (опционально) ссылку на спецификацию API, или файл с ней.