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.
 
 

51 lines
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]}
```