# Сокращатель ссылок Данный проект предоставляет `API` для сокращения ссылок и отслеживания переходов по этим ссылкам. Для работы данного сервиса необходима готовя БД `PostgreSQL` и `Redis`. ## Начало работы В корне проекта создаём файл `.env` и заполняем его по шаблону из файла `.env_template`. В поле `MODE` указываем `DEV`, а в поле `SHORTENER_HOST` - домен сервера, где будет хоститься сервис. Собираем докер образ ```shell docker compose build ``` Запускаем докер контейнер ```shell docker compose up ``` По умолчанию сервис использует порт `8000` в контейнере и порт `8000` вне контейнера. ## Работа с `API` Для получения сокращённой ссылки необходимо отправить `POST` запрос на эндпоинт `/zip_url`. Он вернёт новую ссылку в `JSON` объекте формата `{"new_url": }`. При обращении по этому адресу будет выполнен редирект на оригинальный `URL` и в редис добавится таймстемп с указанием количества секунд от начала эпохи, когда произошёл редирект. Получить данные счётчика редиректов можно при обращении к эндпоинту `/stats/`, где `URL_ID` это айдишник, который указан в укороченном `URL`. Этот эндпоинт возвращает `JSON` объект формата `{"visit_times": , "timestamps": []}`. ## Тестирование Для начала тестирования необходимо создать файл `.test.env` и заполнить его по образцу из `.env_template`. Для запуска тестов, так же необходимо установить все зависимости ```shell pip install -r requirements.txt ``` Запуск тестов ```shell pytest ```