You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.0 KiB

Тестовое задание для Stilsoft

Сервис для асинхронной обработки ссылок.

Для настройки сервиса используются переменные окружения в файле .env. Экспортировать их в терминал не нужно, они считаются автоматически. Запуск осуществляется через cargo run.

Реализованные фичи

  • сервер на axum с API для управления ссылками (просмотр/загрузка/удаление, см. схему ниже)
  • in-memory хранилище на sled
  • из результата запроса ссылки достаётся количество символов
  • кэширование результатов (бессрочное)
  • удаление дубликатов ссылок
  • возможность указать размер пула обработчиков ссылок через URL_HANDLERS_POOL_SIZE
  • логирование и чтение настроек логирования через RUST_LOG
  • отмена загрузки ссылок на SIGHUP

Для отправки HTTP-запросов к сервису можно использовать дополнительную утилиту run.py:

./run.py list <url1> <url2>
./run.py upload <url1> <url2>
./run.py del <url1> <url2>

Схема

Получение списка сохранённых ссылок:

Без фильтров:
GET localhost:8000/url

С фильтром:
POST localhost:8000/url
    body: {"urls": [url1, url2]}

Загрузка ссылок:

POST localhost:8000/url/upload
    body: {"urls": [url1, url2]}

Удаление сохранённых ссылок:

Удаление всех ссылок:
GET localhost:8000/url/delete

Удаление заданных ссылок:
POST localhost:8000/url/delete
    body: {"urls": [url1, url2]}