Написать REST API сервис с несколькими доступными командами

/rest/counter
  • Нужно написать простую реализацию счетчика. Необходимо добавить команды по увеличению и уменьшению счетчика. Хранить счетчик в Redis. Доступные команды:
    • POST /rest/counter/add/$i — команда для увеличения счетчика, где $i — это целое значение, на которое следует увеличить счетчик

    • POST /rest/counter/sub/$i — команда для уменьшения счетчика, где $i — это целое значение, на которое следует уменьшить счетчик

    • GET /rest/counter/val — команда для получения текущего значения счетчика Для всех команд необходимо написать юнит тесты в отдельном файле.

    • Усложненный вариант задания. Написать юнит тесты без поднятия Redis сервера.

/rest/substr
  • Нужно найти максимальную подстроку, не содержащую повторяющихся символов. Входная строка состоит из латинских букв (нижний и верхний регистр) и цифр. Доступные команды:
    • POST /rest/substr/find — команда для нахождения заданной подстроки. Строка находится в теле HTTP запроса.
    • Для всех команд необходимо написать юнит тесты в отдельном файле.
/rest/self
  • Необходимо реализовать поиск всех идентификаторов во всех исходных кодах реализуемого REST API сервера, которые содержат данную подстроку. Доступные команды:
    • GET /rest/self/find/$str — команда для поиска идентификаторов. Возвращает список всех идентификаторов, удовлетворяющих заданному условию. Для всех команд необходимо написать юнит тесты в отдельном файле.
/rest/hash
  • Необходимо реализовать подсчет следующей хэш функции:
    • Взять CRC64 хэш от входной строки
    • Взять текущий timestamp с точностью до наносекунд
    • Сделать логическое «И» текущего timestamp и текущего хэша
    • Повторить шаги 2-3 в течение минуты с интервалом в 5 секунд
    • Посчитать число единиц в двоичной записи полученного числа. Количество единиц и будет являться «хэшом»
  • Более того нельзя заставлять клиента REST API сервера ждать. Поэтому у клиента есть возможность дать заявку на расчет данного хэша.
    • POST /rest/hash/calc — команда для подачи заявки на расчет хэша. Данные для хэширования передаются в HTTP теле запроса. В ответ приходит уникальный идентификатор заявки.
    • GET /rest/hash/result/$id — команда для получения результата для заявки с идентификатором $id. Команда возвращает «PENDING», если результат еще не посчитан и сам хэш, если подсчет уже произошел
    • Написать свою реализацию функции, извлекающей текущий timestamp, с учетом того, что в один момент времени ее может вызывать только один исполнитель.
    • Ограничить количество одновременно вычисляющихся хешей некой константой N
/rest/email

Необходимо реализовать поиск строки следующего формата: «Email:__$email»

  • Где вместо «__» может быть любое количество пробельных символов (в том числе и переносов строк), а вместо $email должна быть строка, похожая на настоящий email Доступные команды:
  • POST /rest/email/check — команда, которая анализирует тело HTTP запроса и выдает все найденные email адреса.
  • Усложненное задание: написать аналогичный функционал, который вместо email адресов будет искать последовательность цифр, которая является корректным ИИН.