-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
119 lines (93 loc) · 2.67 KB
/
server.js
File metadata and controls
119 lines (93 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const express = require('express');
const app = express();
const port = process.env.PORT || 8081;
var http = require('http');
var https = require('https');
app.get('/ping', (req, res) => {
res.send("pong");
});
app.get('/BR', async (req, res, next) => {
try {
//https://api.mercadolibre.com/classified_locations/countries/BR
var url = 'https://api.mercadolibre.com/classified_locations/countries/BR';
getApiData(url, function(err, data) {
if (err) { // Check for the error and throw if it exists.
res.send({ express: err });
}
else {
response = data.states;
response.forEach(function(singleitem) {
singleitem.type = "State";
});
res.send({ express: response });
}
});
} catch (e) {
//this will eventually be handled by your error handling middleware
console.log(e);
}
});
//Get the cities of any given state
app.get('/cities/:id', async (req, res, next) => {
try {
//https://api.mercadolibre.com/classified_locations/states/id
var url = 'https://api.mercadolibre.com/classified_locations/states/' + req.params.id;
getApiData(url, function(err, data) {
if (err) { // Check for the error and throw if it exists.
res.send({ express: err });
}
else {
response = data.cities;
response.forEach(function(singleitem) {
singleitem.type = "City";
});
res.send({ express: response });
}
});
} catch (e) {
//this will eventually be handled by your error handling middleware
console.log(e);
}
});
//Get the neighborhoods of any given city
app.get('/neighborhoods/:id', async (req, res, next) => {
try {
//https://api.mercadolibre.com/classified_locations/cities/id
var url = 'https://api.mercadolibre.com/classified_locations/cities/' + req.params.id;
getApiData(url, function(err, data) {
if (err) { // Check for the error and throw if it exists.
res.send({ express: err });
}
else {
response = data.neighborhoods;
response.forEach(function(singleitem) {
singleitem.type = "Neighborhoods";
});
res.send({ express: response });
}
});
} catch (e) {
//this will eventually be handled by your error handling middleware
console.log(e);
}
});
//Start the server
app.listen(port, () => console.log(`Listening on port ${port}`));
function getApiData(url, callback) {
https.get(url, function (res) {
// Se actualiza el stream continuamente con datos
var body = '';
res.on('data', function(data) {
body += data;
});
res.on('end', function() {
// los datos se recibieron completos.
var json = JSON.parse(body);
callback(null, json);
});
res.on('error', function (e) {
console.error(e);
callback("Error", null);
});
});
}