Bienvenidos sean a este post, hoy volveremos a nuestra aplicacion notas.
Hasta el post anterior hemos creado un «servidor» donde mediante REST podes crear, modificar o eliminar usuarios, y lo administramos mediante un cliente de CLI, pero en este post nos centraremos en como establecer el modelo para poder integrar el ingreso de usuario para la aplicacion notas y para ello necesitaremos de los dos, en caso de no tenerlo les dejo un link para descargar el ultimo codigo de notas:
Una vez descargado simplemente extraigan la carpeta que contiene la aplicacion en el PC y ya esta listo para usarse, el siguiente paso sera descargar el ultimo codigo del administrador de usuarios, a continuacion les dejo el link:
En este caso vuelven a repetir lo mismo, extraen el directorio que posee en la misma ubicacion donde pusieron el directorio notas, con los dos juntos ya tenemos todo listo para comenzar a trabajar, por el momento trabajaremos con la aplicacion notas pero tendremos un pequeño inconveniente, el modulo restify-clients que usamos para el cliente del servidor no funciona con async por lo tanto no podremos integrarlo, pero para esta ocasion utilizaremos otro denominado superagent, para instalarlo debemos ingresar al directorio notas y desde alli ejecutaremos el siguiente comando:
$ npm install superagent@^5.2.x --save
Este se encargara de instalar el modulo de superagent, con esto realizado nuestro siguiente paso sera ir al directorio models y crearemos un nuevo archivo con el nombre de users-admin.mjs y le agregaremos estet codigo inicial:
models/users-admin.mjs
import { default as request } from 'superagent';
import util from 'util';
import url from 'url';
const URL = url.URL;
import DBG from 'debug';
const debug = DBG('notas:users-admin');
const error = DBG('notas:users-error');
var idauten = 'them';
var codigoaut = 'D4ED43C0-8BD6-4FE2-B358-7C0E230D11EF';
function reqURL(path) {
const requrl = new URL(process.env.URL_SERVICIO_USER);
requrl.pathname = path;
return requrl.toString();
}
En este codigo como vinimos trabajando hasta ahora primero importaremos todos los modulos necesarios y en unos casos crearemos un alias para mejorar el acceso, como es el caso de URL, y luego tenemos dos funciones para el tema de la depuracion como son debug y error, para mostrar la accion y el error respectivamente, despues tenemos el usuario la clave de autenticacion para poder conectarnos a nuestro servidor de usuarios, sobre este tema hablamos en este post, lo siguiente sera definir una funcion para establecer el url de solicitud o request, en este caso la usaremos para poder llamar a los distintos escuchadores porque lo pasaremos en el argumento, primero definiremos un objeto que sera la url de conexion al servidor y para ello usaremos una variable de entorno, despues de creado usaremos la propiedad pathname para pasarle la direccion que debemos usar para cada accion, por ultimo devolveremos el url que se genero.
Nuestro siguiente paso sera agregar las funciones que se encargaran de administrar a los usuarios mediante todos los escuchadores que posee el servidor, para ello comencemos agregando el siguiente bloque de codigo:
export async function crear(usuario, clave, proveedor,
apellido, nombre, email, foto) {
var res = await request
.post(reqURL('/crear'))
.send({ usuario, clave, proveedor,
apellido, nombre, email, foto})
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
.auth(idauten, codigoaut);
return res.body;
}
Esta sera la funcion encargada de crear nuevos usuarios en la base de datos, para ello como argumento recibira todos los valores posibles en la tabla, nuestro primer paso sera crear un nuevo objeto que sera nuestro request o solicitud, es decir lo que deseamos realizar y en este caso nos referimos a la creacion del usuario, y a este objeto le encadenaremos varios metodos siendo el primero un post para llamar al escuchador y lo pasaremos mediante la funcion reqURL que hicimos anteriormente, observen como pasamos como argumento la direccion para realizar esta tarea, recuerden que sobre este escuchador hablamos en este post, despues estableceremos el tipo de como JSON, asi como debe aceptarlo (recuerden que el dato que devuelve son de tipo JSON) y por ultimo enviaremos los datos para realizar la autenticacion contra el server y se nos permite agregar el nuevo usuario, por ultimo con nuestro objeto de respuesta creado (res) lo devolveremos, pasemos a agregar la siguiente funcion:
export async function cambiar(usuario, clave, proveedor,
apellido, nombre, email, foto) {
var res = await request
.post(reqURL(`/cambiar/${usuario}`))
.send({ usuario, clave, proveedor,
apellido, nombre, email, foto })
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
.auth(idauten, codigoaut);
return res.body;
}
Esta nueva funcion nos permite cambiar los datos del usuario, si observan es de manera similar al anterior (por no decir igual) dado que recibe los mismos datos, utiliza el mismo objeto para la respuesta asi como el metodo de llamado al escuchador pero en este caso solamente llamamos al otro escuchador y le pasamos el usuario para que lo encuentre, despues el resto es igual para crear el mismo tipo de dato que trabaja, asi como la autenticacion para finalmente devolver el dato de body del objeto de respuesta, agreguemos la siguiente funcion:
export async function buscar(usuario) {
var res = await request
.get(reqURL(`/buscar/${usuario}`))
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
.auth(idauten, codigoaut);
return res.body;
}
De vuelta volvemos a repetir la misma estructura para esta funcion, la cual se encarga de buscar un usuario que le informemos, este es un poco mas resumido pero volvemos a hacer lo mismo, con un llamado al escuchador para buscar y procesarlo de la misma manera que antes, pasemos a agregar la siguiente funcion:
export async function chequeaClave(usuario, clave) {
var res = await request
.post(reqURL(`/chequear`))
.send({ usuario, clave })
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
.auth(idauten, codigoaut);
return res.body;
}
De vuelta repetimos la misma estructura, y la funcion que agregamos es para llamar al chequeador de claves, la cual se encarga de analizar la clave del usaurio que le pasemos para informarnos si es correcta o no, pasemos a agregar la siguiente funcion:
export async function buscarCrear(perfil) {
var res = await request
.post(reqURL('/buscar-o-crear'))
.send({
usuario: perfil.id,
clave: perfil.clave,
proveedor: perfil.proveedor,
apellido: perfil.apellido,
nombre: perfil.nombre,
email: perfil.email,
foto: perfil.foto
})
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
.auth(idauten, codigoaut);
return res.body;
}
Esta es una funcion muy particular porque sera la encargada de llamar al escuchador que ejecuta el comando encargado de buscar un usuario donde si lo encuentra procede a informarnos los datos de este pero sino lo encuentra procede a crearlo en base a la informacion que le pasemos, como curiosidad este recibira un objeto con todos los datos dentro y despues mediante el send nombraremos las propiedades con los mismos que los campos de la tabla para despues asignarle cada uno de los valores de las propiedades enviados en el objeto, entenderan el porque de esta funcion en uno de los proximos posts, pasemos a agregar la siguiente funcion:
export async function listar() {
var res = await request
.get(reqURL('/listar'))
.set('Content-Type','application/json')
.set('Accept','application/json')
.auth(idauten, codigoaut);
return res.body;
}
Esta sera la funcion encargada de devolvernos todos los usuarios en la tabla, su estructura es muy similar a las anteriores, con esto ya tenemos el modelo para poder acceder y manipular los usuarios en nuestro server, nuestro siguiente paso sera implementar el uso en la aplicacion pero eso lo veremos en el siguiente post, antes de finalizar les dejo un link para descargar todos los archivos del proyecto y los creados en este post:
En resumen, hoy hemos creado el modelo que se encargara de tener todos los comandos necesarios para poder administrar nuestro servidor, es decir son las equivalencias de los comando que vimos en el cliente del post anterior, pero en el proximo post le daremos una verdadera utilidad a algunos de ellos, espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
