roble_api_database 1.0.1 copy "roble_api_database: ^1.0.1" to clipboard
roble_api_database: ^1.0.1 copied to clipboard

Cliente HTTP para interactuar con el backend Roble API.

📦 roble_api_database #

Paquete para Flutter que facilita la comunicación con la plataforma Roble API.

Roble #

https://roble.openlab.uninorte.edu.co/

Este paquete provee una capa ligera para autenticación y operaciones CRUD sobre las bases de datos expuestas por Roble, manteniendo una interfaz simple y adecuada para aplicaciones móviles y de escritorio con Flutter.

Características principales

  • Inicialización simple mediante RobleApiConfig.
  • Métodos para registro, login y logout.
  • Operaciones CRUD (create, read, update, delete).
  • Helpers para manejo de esquemas/tablas.
  • Inyección de http.Client para facilitar tests.
  • Manejo consistente de errores (lanza RobleApiException).

🚀 Instalación #

Agrega la dependencia en tu proyecto Flutter:

flutter pub add roble_api_database

Importa el paquete donde lo necesites:

import 'package:roble_api_database/roble_api_database.dart';

🧭 Quick start #

Ejemplo mínimo de uso (async/await):

final db = RobleApiDataBase(
	config: const RobleApiConfig(
		dataUrl: 'https://tu-api.com/database/tu-proyecto',
		authUrl: 'https://tu-api.com/auth/tu-proyecto',
	),
);

// Registrar usuario
final user = await db.register(
	email: 'usuario@email.com',
	password: 'Password123!',
	name: 'Nombre Usuario',
);

// Iniciar sesión
final session = await db.login(
	email: 'usuario@email.com',
	password: 'Password123!',
);
String accessToken = session['accessToken'];

// Cerrar sesión
await db.logout(accessToken: accessToken);

// CREATE - Crear registro
final nuevoUsuario = await db.create('usuarios', {
	'nombre': 'Ana García',
	'email': 'ana@email.com',
	'edad': 28,
});

// READ - Leer todos los registros
final usuarios = await db.read('usuarios');

// UPDATE - Actualizar registro
final actualizado = await db.update('usuarios', usuarioId, {
	'edad': 29,
});

// DELETE - Eliminar registro
final eliminado = await db.delete('usuarios', usuarioId);

Nota: todos los métodos son asíncronos y pueden lanzar RobleApiException en caso de error de red o respuesta no esperada. Usa try/catch alrededor de tus llamadas.


� API (resumen) #

Los métodos disponibles en la API pública del paquete son los siguientes (firma orientativa):

  • Future<Map<String, dynamic>> register({required String email, required String password, required String name})
  • Future<Map<String, dynamic>> login({required String email, required String password})
  • Future<void> logout({required String accessToken})
  • Future<Map<String, dynamic>> create(String tableName, Map<String, dynamic> data) — devuelve el registro insertado o la respuesta del servidor.
  • Future<List<Map<String, dynamic>>> read(String tableName, {Map<String, dynamic>? filters})
  • Future<Map<String, dynamic>> update(String tableName, dynamic id, Map<String, dynamic> data)
  • Future<Map<String, dynamic>> delete(String tableName, dynamic id)
  • Future<void> createTable(String tableName, List<Map<String, dynamic>> columns) — helper para crear tablas (si el backend lo permite).
  • Future<dynamic> getTableData(String tableName) — retorna datos de esquema/tabla.

Estos métodos suelen devolver Map<String, dynamic> o List<Map<String, dynamic>> según el endpoint. Consulta el contrato de tu backend Roble para detalles específicos del formato.


⚙️ Configuración #

Usa RobleApiConfig para configurar las URLs/base headers:

const cfg = RobleApiConfig(
	dataUrl: 'https://tu-api.com/database/tu-proyecto',
	authUrl: 'https://tu-api.com/auth/tu-proyecto',
	// authHeaders: {'X-Api-Key': 'xxx'},
	// dataHeaders: {'X-Client': 'mi-app'},
);

Para pruebas puedes inyectar un http.Client mock (la implementación interna permite pasar un cliente para tests).


🛡️ Manejo de errores #

El paquete lanza RobleApiException cuando hay problemas de red, timeout o respuestas con errores del servidor. Ejemplo:

try {
	final session = await db.login(email: 'a', password: 'b');
} on RobleApiException catch (e) {
	// Mostrar mensaje al usuario
	print('Error Roble API: ${e.message}');
} catch (e) {
	// Errores inesperados
	print('Error inesperado: $e');
}

🧪 Tests y desarrollo #

  • Para pruebas unitarias puedes inyectar un cliente HTTP mock (por ejemplo con http/testing.dart o mockito).
  • Asegúrate de no exponer tokens en logs en producción.

🛠️ Contribuciones #

Las contribuciones son bienvenidas. Si encuentras un bug o quieres proponer una mejora:

  1. Abre un issue describiendo el problema o la propuesta.
  2. Crea un fork, desarrolla tu cambio en una rama y abre un Pull Request.
  3. Añade pruebas cuando sea posible y actualiza la documentación si el API cambia.

Guidelines:

  • Mantén el estilo idiomático de Dart/Flutter y escribe tests para lógica no trivial.
  • Evita cambios rompientes en la API pública sin una clara justificación y versionado.

📝 Licencia #

Este proyecto se distribuye bajo la licencia MIT — si quieres otra licencia, házmelo saber.


Resumen #

roble_api_database es un cliente ligero para Flutter que simplifica las peticiones HTTPS hacia la plataforma Roble. No abstrae la lógica de negocio del backend: su objetivo es facilitar el consumo de endpoints estandarizados (auth + CRUD) con manejo consistente de errores y facilidad para testing.

¡Las contribuciones y mejoras son muy bienvenidas! 🚀

0
likes
0
points
11
downloads

Publisher

unverified uploader

Weekly Downloads

Cliente HTTP para interactuar con el backend Roble API.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, http

More

Packages that depend on roble_api_database