Files
dataminer/index.js
2020-02-22 12:30:22 +01:00

64 lines
1.9 KiB
JavaScript

const fetch = require("node-fetch");
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'simcompanies',
password: '',
database: 'simcompanies'
});
const marketAPI = "https://www.simcompanies.com/api/v1/market-ticker/";
var date = new Date();
//don't ask me why, but simcompanies uses yesterday to get the values for today...
date.setDate(date.getDate() - 1);
const url = marketAPI + date.toISOString() + "/";
//function to get marketprices from API:
const getData = async url => {
var marketData = await fetch(url);
if (marketData.status === 200) {
marketData = await marketData.text();
marketData = await JSON.parse(marketData);
return marketData;
} else {
throw ("fetch returned status code " + marketData.status);
}
}
const storeData = async marketData => {
marketData = await marketData;
connection.beginTransaction(function (err) {
if (err) { throw err; }
for (var data in marketData) {
const kind = mysql.escape(marketData[data]["kind"]);
const price = mysql.escape(marketData[data]["price"]);
const storedate = `FROM_UNIXTIME(${Math.round(date.valueOf() / 1000)})`;
const querystring = `INSERT INTO market (kind,price,time) VALUES (${kind},${price},${storedate})`
connection.query(querystring, function (error, results, fields) {
if (error) {
return connection.rollback(function () {
throw error;
});
}
});
}
connection.commit(function (err) {
if (err) {
return connection.rollback(function () {
connection.end();
throw err;
});
} else {
connection.end();
}
});
});
}
storeData(getData(url));