|
|
|
# Тестовое задание для Stilsoft
|
|
|
|
|
|
|
|
Сервис для асинхронной обработки ссылок.
|
|
|
|
|
|
|
|
Для настройки сервиса используются переменные окружения в файле `.env`. Экспортировать их в терминал не нужно, они считаются автоматически.
|
|
|
|
Запуск осуществляется через `cargo run`.
|
|
|
|
|
|
|
|
Реализованные фичи:
|
|
|
|
- сервер на axum с API для управления ссылками (просмотр/загрузка/удаление, см. схему ниже)
|
|
|
|
- in-memory хранилище на sled
|
|
|
|
- из результата запроса ссылки достаётся количество символов
|
|
|
|
- кэширование результатов (бессрочное)
|
|
|
|
- удаление дубликатов ссылок
|
|
|
|
- возможность указать размер пула обработчиков ссылок через URL_HANDLERS_POOL_SIZE
|
|
|
|
- логирование и чтение настроек логирования через RUST_LOG
|
|
|
|
|
|
|
|
|
|
|
|
Для отправки 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]}
|
|
|
|
```
|