UNPKG

buses-api

Version:

Module that gives Argentina long distance buses schedules

115 lines (103 loc) 4.76 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _request = require('request'); var _request2 = _interopRequireDefault(_request); var _cheerio = require('cheerio'); var _cheerio2 = _interopRequireDefault(_cheerio); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Parser = function () { function Parser() { _classCallCheck(this, Parser); } _createClass(Parser, [{ key: 'company', value: function company(dom) { var company = {}; try { company.url = dom.children(".detalle_empresa")["0"].attribs.href.trim(); company.nombre = dom.children(".detalle_empresa")["0"].children[0].data.trim(); } catch (e) {} return company; } }, { key: 'leaves', value: function leaves(dom) { return dom.text().trim(); } }, { key: 'arrives', value: function arrives(dom) { return dom.text().trim(); } }, { key: 'days', value: function days(dom) { var days = { mon: (0, _cheerio2.default)(dom["0"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, tue: (0, _cheerio2.default)(dom["1"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, wed: (0, _cheerio2.default)(dom["2"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, thu: (0, _cheerio2.default)(dom["3"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, fri: (0, _cheerio2.default)(dom["4"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, sat: (0, _cheerio2.default)(dom["5"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, sun: (0, _cheerio2.default)(dom["6"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false, hol: (0, _cheerio2.default)(dom["7"]).children("img").attr("src").toString().indexOf("icon-yes.png") >= 0 ? true : false }; return days; } }, { key: 'service', value: function service(rows) { var len = rows.length; return (0, _cheerio2.default)(rows[len - 2]).text().trim(); } }]); return Parser; }(); exports.default = { cities: function cities(_) { return new Promise(function (res, rej) { _request2.default.post('http://www.terminalrosario.gob.ar/wp-content/plugins/terminal-rosario/ajax.php', { form: { method: 'obtenerLocalidades', module: 'buscador', type: 'json' } }, function (err, response, body) { if (err) return rej(err); if (response.statusCode != 200) return rej(response.statusCode); var results = []; try { results = JSON.parse(body); res(results.results); } catch (e) { rej(e); } }); }); }, travel: function travel(origin, destination) { var parser = new Parser(); return new Promise(function (res, rej) { _request2.default.post('http://www.terminalrosario.gob.ar/resultados-buscador', { form: { origen: origin, destino: destination, buscar: 'Buscar' } }, function (err, response, body) { if (err) return rej(err); if (response.statusCode != 200) return rej(response.statusCode); var html = _cheerio2.default.load(body); var travels = []; var tbody = html('#resultados tbody'); var rows = tbody.children("tr"); for (var i = 0; i < rows.length; i++) { var row = _cheerio2.default.load(rows[i]); var travel = { origen: origin, destino: destination, empresa: parser.company(row(".empresa")), sale: parser.leaves(row(".sale")), llega: parser.arrives(row(".llega")), dias: parser.days(row(".dias")), servicio: parser.service(row("td")) }; travels.push(travel); } res(travels); }); }); } };