link_shortener/README.md

49 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сокращатель ссылок
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
Данный проект предоставляет `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>}`.
При обращении по этому адресу будет выполнен редирект на оригинальный `URL` и в редис добавится таймстемп с указанием количества секунд от начала эпохи, когда произошёл редирект.
Получить данные счётчика редиректов можно при обращении к эндпоинту `/stats/<URL_ID>`, где `URL_ID` это айдишник, который указан в укороченном `URL`. Этот эндпоинт возвращает `JSON` объект формата `{"visit_times": <redirected_times>, "timestamps": [<redirect_timestamp>]}`.
## Тестирование
Для начала тестирования необходимо создать файл `.test.env` и заполнить его по образцу из `.env_template`.
Для запуска тестов, так же необходимо установить все зависимости
```shell
pip install -r requirements.txt
```
Запуск тестов
```shell
pytest
```