From e9c1cda9779a60e7cea2f92c7cb37451dd807d13 Mon Sep 17 00:00:00 2001 From: Ulises Date: Sat, 18 Jun 2016 23:04:51 +0200 Subject: [PATCH] Proveedores. Paseador de RSS y G. Sheets --- providers/rss.js | 59 ++++++++++++++++++++++++++++++++++++++++++++ providers/sheets.js | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 providers/rss.js create mode 100644 providers/sheets.js diff --git a/providers/rss.js b/providers/rss.js new file mode 100644 index 0000000..7fb88c7 --- /dev/null +++ b/providers/rss.js @@ -0,0 +1,59 @@ +var rsj = require('rsj'), + config = require('../config'), + firebase = require('firebase'), + jsonsafeparse = require('json-safe-parse'); + +function ProviderRSS(custom){ + this.url = custom.url; + this.provider_db = custom.provider_db; + this.provider = custom.provider || false; + this.provider_logo = custom.provider_logo || false; + this.outstanding = custom.outstanding || false; + var _self = this; + this.uploadJobs = function (){ + rsj.r2j(_self.url,function(json) { + + var data = false, + dataReady = []; + + try { + data = jsonsafeparse(json); + } catch(e){ + console.log("["+_self.provider_db+"] - Parsing ERROR! "); + } + + if(data){ + data.map(function(x, i) { + var pubdate = new Date (data[i].pubdate); + if(pubdate.isInFrame()){ + dataReady.push({ + contract: false, + journey: false, + salary: false, + place: false, + company: false, + description: data[i].description.textCleaner() || false, + provider_logo: _self.provider_logo, + title: data[i].title || false, + pubdate: data[i].pubdate || false, + link: data[i].link.replace('@href: ','').trim() || false, + provider: _self.provider, + outstanding: _self.outstanding + }); + } + + }); + + var ref = firebase.database().ref('data/'+_self.provider_db+'/'); + ref.set(dataReady), function(error){ + if (error) { + console.warn('[FIREBASE] ERROR - SYNC ERROR!', _self.provider_db); + } + }; + + } + }) + } +} + +module.exports = ProviderRSS; \ No newline at end of file diff --git a/providers/sheets.js b/providers/sheets.js new file mode 100644 index 0000000..856612f --- /dev/null +++ b/providers/sheets.js @@ -0,0 +1,60 @@ +var https = require('https'), + fs = require('fs'), + firebase = require('firebase'); + +function ProviderSheets(custom){ + this.id = custom.id; + this.provider_db = custom.provider_db; + this.url = "https://spreadsheets.google.com/feeds/list/" + this.id + "/od6/public/values?alt=json"; + this.outstanding = custom.outstanding || false; + var _self = this; + this.uploadJobs = function (){ + https.get(_self.url, function(res){ + var body = ''; + + res.on('data', function(chunk){ + body += chunk; + }); + + res.on('end', function(){ + var data = JSON.parse(body); + data = data.feed.entry; + + var keyData = []; + + for (var i = 0; i < data.length; i++) { + + keyData.push({ + contract: false, + journey: false, + salary: false, + place: false, + company: false, + description: data[i]["gsx$description"].$t.textCleaner() || false, + provider_logo: "", + title: data[i]["gsx$title"].$t || false, + pubdate: data[i]["gsx$pubdate"].$t || false, + link: data[i]["gsx$link"].$t || false, + provider: data[i]["gsx$provider"].$t || "la red de redes", + outstanding: false + }); + + } + + var ref = firebase.database().ref('data/'+_self.provider_db+'/'); + + ref.set(keyData), function(error){ + if (error) { + console.warn('[FIREBASE] ERROR - SYNC ERROR with', _self.provider_db); + } + }; + + + }); + }).on('error', function(e){ + console.log("[DOWNLOAD]: ERROR with "+_self.provider_db, e); + }); + } +} + +module.exports = ProviderSheets; \ No newline at end of file