Skip to content

Acortador de URLs simple que utiliza Redis para el almacenamiento en memoria de las URLs acortadas y Turso para la persistencia de datos.

Notifications You must be signed in to change notification settings

Catrilao/url-shortener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URL Shortener

Este proyecto es un acortador de URLs simple. Utiliza Redis para el almacenamiento en memoria de las URLs acortadas, lo que permite una recuperación rápida y eficiente. Si una URL no se encuentra en Redis, esta es buscada en Turso.

Tabla de contenidos

Requisitos

Instalación

  1. Clonar el repositorio
git clone https://github.com/Catrilao/url-shortener.git
  1. Instalar las dependencias
pip install -r requirements.txt
  1. Crear un archivo .env en la raíz del proyecto y completarlo con las variables de entorno necesarias.

Puedes encontrar información sobre cómo obtener las variables de entorno para Redis y Turso en las siguientes secciones:

Aquí tienes un ejemplo de cómo podría verse tu archivo .env:

# Puedes usar esta URL o reemplazarla por otra
SERVER_BASE_URL=http://127.0.0.1:4503

# Configuración de Redis
REDIS_HOST=                  # Aquí va el host de Redis
REDIS_PORT=                  # Aquí va el puerto de Redis
REDIS_PASSWORD=              # Aquí va la contraseña de Redis

# Configuración de Turso
TURSO_DB_URL=                # Aquí va la URL de la base de datos de Turso
TURSO_DB_AUTH_TOKEN=         # Aquí va el token de autenticación de la base de datos de Turso
  1. Ejecutar la aplicación
python main.py

La aplicación se ejecutará en la URL proporcionada en el archivo .env.

Configuración de Redis

  1. Ve a Redis Labs y crea una nueva suscripción.
  2. Una vez que hayas creado la suscripción, crea una nueva base de datos.
  3. Después de crear la base de datos, haz clic en el botón "conectar".
  4. En la página de conexión, selecciona "Redis Client" y luego "Python".
  5. Copia los valores de host, port y password que se muestran.
  6. Crea un archivo .env en la raíz de tu proyecto y pega los valores de host, port y password
REDIS_HOST=                  # Aquí va el host de Redis
REDIS_PORT=                  # Aquí va el puerto de Redis
REDIS_PASSWORD=              # Aquí va la contraseña de Redis

Configuración de Turso

  1. Instala la CLI de Turso siguiendo las instrucciones disponibles aquí.

  2. Una vez instalada la CLI de Turso, crea una nueva base de datos con el siguiente comando:

turso db create [NOMBRE-BD]
  1. Ingresa a la base de datos:
turso db shell [NOMBRE-BD]
  1. Crea la tabla donde se almacenarán las URLs
CREATE TABLE urls (
  short_url TEXT PRIMARY KEY,
  original_url TEXT
);

Agregar Turso al proyecto

Para acceder a la base de datos, necesitas la url de tu base de datos Turso y un token de autenticación.

  1. Para obtener la url de la base de datos, ejecuta este comando:
turso db show [NOMBRE-BD] --url
  1. Para crear un token de autenticación:
turso db tokens create [NOMBRE-BD] --expiration none
  1. Crea un archivo .env en la raíz del proyecto copia la url de la base de datos y el token de autenticación:
TURSO_DB_URL=                # Introduce la URL de la base de datos de Turso
TURSO_DB_AUTH_TOKEN=         # Introduce el token de autenticación de la base de datos de Turso

Uso

La aplicación tiene dos rutas:

  • GET / : Página principal donde se pueden acortar las URLs.
  • GET /<short-url> : Redirecciona a la url original asociado a la URL acortada.

Manejo de errores

La aplicación hara logs de los errores a la consola. Maneja errores relacionados a las conecciones de Redis y Turso, almacenamiento y devolución de URLs.

Tests

Este proyecto usa pytest para el testeo. Para correr todos los tests, puedes usar este comando:

pytest

Para ejecutar los tests de manera singular:

  • Este test prueba las conneciones a Redis y Turso
pytest tests/test_get_connections.py
  • Este test prueba la función que guarda las URLs
pytest tests/test_store_url.py
  • Este test prueba la función que devuelve las URLs
pytest tests/test_get_url.py

About

Acortador de URLs simple que utiliza Redis para el almacenamiento en memoria de las URLs acortadas y Turso para la persistencia de datos.

Topics

Resources

Stars

Watchers

Forks