Advertisement
Guest User

routes

a guest
Apr 4th, 2020
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. var __assign = (this && this.__assign) || function () {
  3.     __assign = Object.assign || function(t) {
  4.         for (var s, i = 1, n = arguments.length; i < n; i++) {
  5.             s = arguments[i];
  6.             for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  7.                 t[p] = s[p];
  8.         }
  9.         return t;
  10.     };
  11.     return __assign.apply(this, arguments);
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. var express = require("express");
  15. var axios = require("axios");
  16. var resources = require("./resources");
  17. var _a = require("country-emoji"), flag = _a.flag, code = _a.code, name = _a.name, countries = _a.countries;
  18. /**
  19.  * Definizione Router
  20.  */
  21. var router = express.Router();
  22. var setRoute = function (path, data) {
  23.     return router.get(path, function (req, res) {
  24.         return res.status(200).send({
  25.             data: data(),
  26.             success: true
  27.         });
  28.     });
  29. };
  30. // Qui i Controllers
  31. var countriesAutocomplete = [];
  32. var continents = {};
  33. var timeseries = {};
  34. var world = {};
  35. setRoute("/api/world", function () { return world; });
  36. //Gli Helpers
  37. var cronDataInterval = function (cb, refreshMilliseconds) {
  38.     if (refreshMilliseconds) {
  39.         setInterval(function () { return cb(); }, refreshMilliseconds);
  40.     }
  41.     cb();
  42. };
  43. cronDataInterval(function () {
  44.     return axios
  45.         .get(resources.timeseries)
  46.         .then(function (response) {
  47.         var cTimeseries = {};
  48.        
  49.         for (var prop in response.data) {
  50.             if (response.data.hasOwnProperty(prop)) {
  51.                 var newProp = void 0;
  52.                 switch (prop) {
  53.                     case "Mainland China":
  54.                         newProp = "China";
  55.                         break;
  56.                     case "US":
  57.                     case "USA":
  58.                         newProp = "United States";
  59.                         break;
  60.                     default:
  61.                         newProp = prop;
  62.                 }
  63.                 if (prop.indexOf("*") !== -1) {
  64.                     newProp = prop.split("*").join("");
  65.                 }
  66.                 cTimeseries[newProp] = response.data[prop];
  67.             }
  68.         }
  69.         timeseries = cTimeseries;
  70.         console.log("\u2705 " + new Date().toString() + " - Timeseries loaded");
  71.     })
  72.         .catch(function (error) {
  73.         // errori vari
  74.         console.log(error);
  75.     });
  76. }, 1000 * 60 * 3);
  77. cronDataInterval(function () {
  78.     return axios
  79.         .all([
  80.         axios.get(resources.scmp),
  81.         axios.get(resources.countries),
  82.         axios.get(resources.allStats)
  83.     ])
  84.         .then(function (responseArr) {
  85.        
  86.         var scmpResponse = responseArr[0];
  87.         var countriesResponse = responseArr[1];
  88.         var stats = responseArr[2];
  89.         var tempMap = {};
  90.         countriesResponse.data.forEach(function (value, index, array) {
  91.             switch (value.country) {
  92.                 case "Mainland China":
  93.                     value.country = "China";
  94.                 case "US":
  95.                 case "USA":
  96.                     value.country = "United States";
  97.                     break;
  98.             }
  99.             if (value.country.indexOf("*") !== -1) {
  100.                 value.country = value.country.split("*").join("");
  101.             }
  102.             if (!tempMap[value.country]) {
  103.                 tempMap[value.country] = value;
  104.             }
  105.         });
  106.         var countries = (scmpResponse.data && scmpResponse.data.entries) || [];
  107.         // Ordino i Paesi
  108.         countries = countries.sort(function (a, b) {
  109.             return parseCommaNumber(a.cases) > parseCommaNumber(b.cases) ? -1 : 1;
  110.         });
  111.         var extraStats = {
  112.             countriesImpacted: 0,
  113.             countriesDeaths: 0,
  114.             active: 0,
  115.             critical: 0,
  116.             todayDeaths: 0,
  117.             todayCases: 0,
  118.             unresolved: stats.data.cases - stats.data.deaths - stats.data.recovered
  119.         };
  120.         countries.forEach(function (value, index, array) {
  121.             switch (value.country) {
  122.                 case "Mainland China":
  123.                     value.country = "China";
  124.                     break;
  125.                 case "US":
  126.                 case "USA":
  127.                     value.country = "United States";
  128.                     break;
  129.             }
  130.             if (value.country.indexOf("*") !== -1) {
  131.                 value.country = value.country.split("*").join("");
  132.             }
  133.             value.casesPerOneMillion = -1;
  134.             value.critical = -1;
  135.             value.active = -1;
  136.             if (tempMap[value.country]) {
  137.                 value.casesPerOneMillion =
  138.                     tempMap[value.country].casesPerOneMillion;
  139.                 value.critical = tempMap[value.country].critical;
  140.                 value.active = tempMap[value.country].active;
  141.                 extraStats.active += tempMap[value.country].active || 0;
  142.                 extraStats.critical += tempMap[value.country].critical || 0;
  143.                 extraStats.todayCases += tempMap[value.country].todayCases || 0;
  144.                 extraStats.todayDeaths += tempMap[value.country].todayDeaths || 0;
  145.             }
  146.             value.cases = parseCommaNumber(value.cases);
  147.             value.deaths = parseCommaNumber(value.deaths);
  148.             value.recovered = parseCommaNumber(value.recovered);
  149.             value.unresolved = value.cases - value.deaths - value.recovered;
  150.             value.fatalityRate =
  151.                 value.cases >= 0 && value.deaths >= 0
  152.                     ? Number(((value.deaths / value.cases) * 100).toFixed(2))
  153.                     : null;
  154.             extraStats.countriesImpacted += value.cases > 0 ? 1 : 0;
  155.             extraStats.countriesDeaths += value.deaths > 0 ? 1 : 0;
  156.             value.flag = flag(value.country);
  157.             value.code = code(value.country);
  158.             setRoute("/api/country/" + value.code, function () {
  159.                 return __assign({ ac: countriesAutocomplete, timeseries: timeseries[value.country] || [] }, value);
  160.             });
  161.             var f = countriesAutocomplete.find(function (item) { return item.data == value.code; });
  162.             if (!f) {
  163.                 countriesAutocomplete.push({
  164.                     value: value.flag + " " + value.country,
  165.                     data: value.code
  166.                 });
  167.             }
  168.             var continent = value.continent.charAt(0).toUpperCase() + value.continent.slice(1);
  169.             if (!continents[continent]) {
  170.                 continents[continent] = {
  171.                     cases: 0,
  172.                     deaths: 0,
  173.                     recovered: 0,
  174.                     critical: 0,
  175.                     active: 0,
  176.                     unresolved: 0,
  177.                     fatalityRate: 0
  178.                 };
  179.             }
  180.             continents[continent].cases += value.cases >= 0 ? value.cases : 0;
  181.             continents[continent].deaths += value.deaths >= 0 ? value.deaths : 0;
  182.             continents[continent].recovered += value.recovered >= 0 ? value.recovered : 0;
  183.             continents[continent].critical += value.critical >= 0 ? value.critical : 0;
  184.             continents[continent].active += value.active >= 0 ? value.active : 0;
  185.             continents[continent].unresolved += value.unresolved >= 0 ? value.unresolved : 0;
  186.         });
  187.         scmpResponse.data.stats = __assign(__assign({}, stats.data), extraStats);
  188.         scmpResponse.data.ac = countriesAutocomplete;
  189.         //scmpResponse.data.continents = []; qui cerco di svuotare, il problema me lo crea continents[]
  190.         scmpResponse.data.continents = continents;
  191.         world = scmpResponse.data;
  192.         console.log("\u2705 " + new Date().toString() + " - World SCMP loaded");
  193.     })
  194.         .catch(function (error) {
  195.         console.log(error);
  196.     });
  197. }, 1000 * 60 * 3);
  198. var parseCommaNumber = function (x) {
  199.     return parseInt(parseFloat(x.replace(/,/g, "")));
  200. };
  201. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement