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.
		
		
		
		
		
			| 
				
					
						 | 
			9 months ago | |
|---|---|---|
| src | 9 months ago | |
| .env | 9 months ago | |
| .gitignore | 9 months ago | |
| Cargo.lock | 9 months ago | |
| Cargo.toml | 9 months ago | |
| README.md | 9 months ago | |
| run.py | 9 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]}