From 06dbeceaf3aec0078c1b5c2f644bfb978ac85216 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Fri, 8 Jul 2016 17:23:15 -0300 Subject: [PATCH] Add XML and CSV response to all routes --- libs/log.js | 2 +- libs/routes/api.js | 3 +- libs/routes/cities.js | 71 +++++++++++++++++++++++++++++++++--------- libs/routes/regions.js | 32 +++++++++++++++---- libs/routes/states.js | 49 +++++++++++++++++++++++------ 5 files changed, 125 insertions(+), 32 deletions(-) diff --git a/libs/log.js b/libs/log.js index 09855713..419b3e4b 100644 --- a/libs/log.js +++ b/libs/log.js @@ -19,7 +19,7 @@ function logger(module) { level: 'debug', label: getFilePath(module), handleException: true, - json: false, + json: true, colorize: true }) ], diff --git a/libs/routes/api.js b/libs/routes/api.js index c85949e6..3d72a1eb 100644 --- a/libs/routes/api.js +++ b/libs/routes/api.js @@ -1,4 +1,5 @@ var express = require('express') +var xml = require('xml') var router = express.Router() var libs = process.cwd() + '/libs/' @@ -125,7 +126,7 @@ router.get('/enrollments.:format?', function(req, res) { } else if (req.params.format === 'xml') { res.set('Content-Type', 'text/xml') res.send(xml({ - 'result': result.data + result: result.data })) } else { diff --git a/libs/routes/cities.js b/libs/routes/cities.js index d605c4df..e13f887b 100644 --- a/libs/routes/cities.js +++ b/libs/routes/cities.js @@ -1,4 +1,5 @@ var express = require('express') +var xml = require('xml') var router = express.Router() var libs = process.cwd() + '/libs/' @@ -13,43 +14,83 @@ router.get('/', function(req, res) { 'SELECT * FROM municipios', true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) router.get('/:id', function(req, res) { conn.query( - 'SELECT * FROM regioes WHERE pk_municipio_id='+req.params.id, true + 'SELECT * FROM municipios WHERE pk_municipio_id='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) router.get('/ibge/:id', function(req, res) { conn.query( - 'SELECT * FROM regioes WHERE codigo_ibge='+req.params.id, true + 'SELECT * FROM municipios WHERE codigo_ibge='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) router.get('/state/:id', function(req, res) { conn.query( - 'SELECT * FROM regioes WHERE fk_estado_id='+req.params.id, true + 'SELECT * FROM municipios WHERE fk_estado_id='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) diff --git a/libs/routes/regions.js b/libs/routes/regions.js index 60352efb..360f9edf 100644 --- a/libs/routes/regions.js +++ b/libs/routes/regions.js @@ -1,4 +1,5 @@ var express = require('express') +var xml = require('xml') var router = express.Router() var libs = process.cwd() + '/libs/' @@ -13,9 +14,18 @@ router.get('/', function(req, res) { 'SELECT * FROM regioes', true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } else { + res.json({ + result: result.data + }) + } }) }) @@ -25,9 +35,19 @@ router.get('/:id', function(req, res) { 'SELECT * FROM regioes WHERE pk_regiao_id='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) diff --git a/libs/routes/states.js b/libs/routes/states.js index 3c3be7b5..0f26ef60 100644 --- a/libs/routes/states.js +++ b/libs/routes/states.js @@ -1,4 +1,5 @@ var express = require('express') +var xml = require('xml') var router = express.Router() var libs = process.cwd() + '/libs/' @@ -13,9 +14,19 @@ router.get('/', function(req, res) { 'SELECT * FROM estados', true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) @@ -25,9 +36,19 @@ router.get('/:id', function(req, res) { 'SELECT * FROM estados WHERE pk_estado_id='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) @@ -36,9 +57,19 @@ router.get('/region/:id', function(req, res) { 'SELECT * FROM estados WHERE fk_regiao_id='+req.params.id, true ).then(function(result) { log.debug(result) - res.json({ - result: result.data - }) + if (req.query.format === 'csv') { + res.csv(result.data) + } else if (req.query.format === 'xml') { + res.set('Content-Type', 'text/xml') + res.send(xml({ + result: result.data + })) + } + else { + res.json({ + result: result.data + }) + } }) }) -- GitLab