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.
- Clonar el repositorio
git clone https://github.com/Catrilao/url-shortener.git
- Instalar las dependencias
pip install -r requirements.txt
- 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
- Ejecutar la aplicación
python main.py
La aplicación se ejecutará en la URL proporcionada en el archivo .env
.
- Ve a Redis Labs y crea una nueva suscripción.
- Una vez que hayas creado la suscripción, crea una nueva base de datos.
- Después de crear la base de datos, haz clic en el botón "conectar".
- En la página de conexión, selecciona "Redis Client" y luego "Python".
- Copia los valores de host, port y password que se muestran.
- 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
-
Instala la CLI de Turso siguiendo las instrucciones disponibles aquí.
-
Una vez instalada la CLI de Turso, crea una nueva base de datos con el siguiente comando:
turso db create [NOMBRE-BD]
- Ingresa a la base de datos:
turso db shell [NOMBRE-BD]
- Crea la tabla donde se almacenarán las URLs
CREATE TABLE urls (
short_url TEXT PRIMARY KEY,
original_url TEXT
);
Para acceder a la base de datos, necesitas la url de tu base de datos Turso y un token de autenticación.
- Para obtener la url de la base de datos, ejecuta este comando:
turso db show [NOMBRE-BD] --url
- Para crear un token de autenticación:
turso db tokens create [NOMBRE-BD] --expiration none
- 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
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.
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.
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