Puedes seguir el proceso de construcción del proyecto en posts anteriores, o simplemente descargar la aplicación hasta este punto con:
$ git clone https://github.com/feardarkness/chat-backend.git
$ git checkout tags/send-receive-messages
Primero, generaremos nuestras credenciales en twitter, ingresar a https://apps.twitter.com/ (ingresar con tu usuario y contraseña), luego hacer click en Create New App:
Agregar Aplicación |
Datos de la aplicación |
Ahora configuraremos los datos para que sean solamente de lectura (siempre dar el permiso mínimo requerido es una buena práctica) y presionamos Update Settings
Permiso de solo lectura |
Además, necesitamos los datos consumer key y consumer secret (anotarlos en un lugar seguro).
Consumer key y secret |
Por último, presionar el botón Create my access token para generar los tokens. Necesitamos el access token y el access token secret (anotarlos en un lugar seguro)
Access toke, y access token secret |
$ npm install twitter-node-client --save
Ahora, en el proyecto backend, crearemos la siguiente estructura de carpetas y archivos:
Estructura de carpetas y archivos |
Comenzaremos agregando el archivo de configuración para conectar a twitter, para ello modificar el archivo configurations/twitter-config.js con las credenciales que obtuvimos al crear nuestra aplicación. El archivo debe quedar con la siguiente estructura (pero con las credenciales que obtuvimos):
module.exports = { consumerKey: 'CHANGE', consumerSecret: 'CHANGE', accessToken: 'CHANGE', accessTokenSecret: 'CHANGE', callBackUrl: 'CHANGE', };
Con las credenciales en su lugar, crearemos el servicio que permita obtener una cantidad de mensajes basados en un hashtag. Para esto modificaremos el archivo services/twitter.js con el siguiente código, que básicamente obtiene las credenciales de conexión y realiza un query básico (q) limitado por defecto a diez registros (count) en caso de éxito resolvemos la promesa con los datos en formato JSON, y en caso de error rechazamos la promesa con el error obtenido:
import debugModule from 'debug'; import TwitterNodeClient from 'twitter-node-client'; import twitterConfigs from '../configurations/twitter-config'; const Twitter = TwitterNodeClient.Twitter; const twitter = new Twitter(twitterConfigs); const debug = debugModule('twitter-service');
module.exports.searchByTag = (tag, quantity = 10) => { return new Promise((resolve, reject) => { twitter.getSearch({ q: `#${tag}`, count: quantity }, (err, response, body) => { reject(err); }, (data) => { resolve(JSON.parse(data)); }); }); }
Luego crearemos la ruta para nuestra API Rest (verbo GET), modificaremos el archivo routes/twitter.js en donde llamamos el servicio recién creado, y en caso de éxito lo devolvemos al usuario (con código 200 que indica éxito en la operación); en caso de error devolvemos la causa del mismo (con código 500 que indica la existencia de un error y que no podemos ser más específicos en la causa del mismo).
import express from 'express'; import twitterService from '../services/twitter'; const router = express.Router(); router.get('/', (req, res) => { twitterService.searchByTag('node') .then((data) => { res.json(data); }) .catch((err) => { res.status(500).json(err); }); }); module.exports = router;
Además, modificaremos el archivo routes/index.js que exportará las rutas que necesitamos agregar a la aplicación.
import twitterRoutes from './twitter'; module.exports.twitterRoutes = twitterRoutes;
Por último, modificaremos el archivo index.js que se encuentra en la raíz del proyecto para cargar la ruta recien creada en el path /twitter.
import express from 'express'; import http from 'http'; import debugModule from 'debug'; import { twitterRoutes } from './routes'; const app = express(); const server = http.Server(app); const debug = debugModule('chat-backend'); app.use('/twitter', twitterRoutes); server.listen(8081, () => { debug('Servidor escuchando en el puerto 8081'); });
Y eso es todo, ahora podemos probar el servicio directamente en el navegador o con postman.
Prueba del servicio de twitter |
Para descargar el proyecto hasta este lugar:
$ git clone https://github.com/feardarkness/chat-backend.git
$ git checkout tags/twitter-api
Ahora ya se puede consumir cualquier otra api de twitter para prácticar modificando el archivo services/twitter.js, Hasta la próxima, keep coding >_<
No hay comentarios:
Publicar un comentario