Skip to content

Сервис для создания сокращенной формы передаваемых URL и анализа активности их использования

License

Notifications You must be signed in to change notification settings

iricshkin/async-url-shortener

Repository files navigation

async-url-shortener

Cервис для создания сокращенной формы передаваемых URL и анализа активности их использования

Стек технологий

  • Python3.11
  • FastApi
  • Postgresql

Установка и запуск

  1. Создать и заполнить .env файл по аналогии с .env.example

  2. Запустить контейнер с сервисами

sudo docker-compose up -d --build
  1. Выполнить миграции
sudo docker-compose exec web alembic upgrade head
  1. Протестировать работоспособность сервисов можно при помощи команды
sudo docker-compose exec web pytest

Документация в формате Swagger доступна по адресу http://127.0.0.1:8080/api/openapi

Описание задания

Реализовать http-сервис, который обрабатывает поступающие запросы. Сервер стартует по адресу http://127.0.0.1:8080.

Список необходимых эндпойнтов
  1. Получить сокращенный вариант переданного URL
POST /

Request

https://...

Метод принимает в теле запроса строку URL для сокращения и возвращает ответ с кодом 201.

  1. Вернуть оригинальный URL
GET /<url_id>

Метод принимает в качестве параметра идентификатор сокращенного URL и возвращает ответ с кодом 307 и оригинальным URL в заголовке Location.

  1. Вернуть статус использования URL
GET /<url_id>/status?[full-info]&&[max-result=10]&&[offset=0]

Метод принимает в качестве параметра идентификатор сокращенного URL и возвращает информацию о количестве переходов, совершенных по ссылке.

В ответе может содержаться как общее количество совершенных переходов, так и дополнительная детализированная информация о каждом переходе (наличие query-параметра full-info и параметров пагинации):

  • время перехода/использования ссылки;
  • информация о клиенте, выполнившем запрос;

Дополнительные требования

  • Реализуйте middlware, блокирующий доступ к сервису запросов из запрещенных подсетей (black list).
  • Реализуйте взаимодействие с сервисом авторизованного пользователя. Пользователь может создавать как приватные, так и публичные ссылки или изменять видимость ссылок. Вызов метода GET /user/status возвращает все созданные ранее ссылки в формате:
[
    {
        "short_id": "<text-id>",
        "short_url": "https://...",
        "original_url": "https://...",
        "type": "<public|private>"
    },
    ...
]

About

Сервис для создания сокращенной формы передаваемых URL и анализа активности их использования

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published