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.
 
 
plazmoid aaef6ed851 add cancellation on sighup 10 months ago
src add cancellation on sighup 10 months ago
.env implement repo 10 months ago
.gitignore initial 10 months ago
Cargo.lock add cancellation on sighup 10 months ago
Cargo.toml add cancellation on sighup 10 months ago
README.md add cancellation on sighup 10 months ago
run.py readme & bugfixes 10 months ago

README.md

Тестовое задание для 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
    body: {"urls": [url1, url2]}