Skip to content

Instantly share code, notes, and snippets.

@No9
Last active December 13, 2015 17:08
Show Gist options
  • Save No9/4944955 to your computer and use it in GitHub Desktop.
Save No9/4944955 to your computer and use it in GitHub Desktop.
Some sample code for parsing a report file
{
"typename" : "header",
"mode":"client",
"peer":"9a6cfdf0-6bab-11e2-8648-fd224dae7ee4",
"timestamp":1359640016194,
"data":
{
"typename" : "summary",
"downloaded":909115392,
"downloadRate":2864163.073936958,
"uploaded":0,
"uploadRate":0,
"cdata": [{
"typename" : "fileinfo",
"name":"PZ566VIRG_ADV_EN-XX_UK-XX_51_2K_20120829_DCM",
"downloaded":862978048,
"downloadRate":970797.2017366746,
"uploaded":0,"uploadRate":0,
"size":1924797021,
"pdata": [{
"typename" : "peerinfo",
"name" : "peer1",
"addr":"79.125.5.243",
"port":9881,
"downloaded":458850304,
"downloadRate":447744.3181877763,
"uploaded":0,
"uploadRate":0
},
{
"typename" : "peerinfo",
"name" : "peer2",
"addr":"54.246.94.172",
"port":9881,
"downloaded":404946944,
"downloadRate":523052.8835488984,
"uploaded":0,
"uploadRate":0
}]
},
{
"typename" : "fileinfo",
"name":"PZ365-PD120123VWID_ADV_EN-XX_UK-XX_51_2K_20120522_DCM",
"downloaded":32505856,
"downloadRate":836071.4686749754,
"uploaded":0,
"uploadRate":0,
"size":356186070,
"pdata":[{
"typename" : "peerinfo",
"name" : "peer1",
"addr":"79.125.5.243",
"port":9881,
"downloaded":13713408,
"downloadRate":291043.0741079767,
"uploaded":0,
"uploadRate":0
},
{
"typename" : "peerinfo",
"name" : "peer2",
"addr":"54.246.94.172",
"port":9881,
"downloaded":19415040,
"downloadRate":545028.3945669987,
"uploaded":0,
"uploadRate":0
}]
},
{
"typename" : "fileinfo",
"name":"PZ360-VIRMEDIA_ADV_F_EN-XX_UK_51_2K_PEDN_20120523_DGN_OV",
"downloaded":13631488,
"downloadRate":1057294.4035253078,
"uploaded":0,
"uploadRate":0,
"pdata":[{
"typename" : "peerinfo",
"name" : "peer1",
"addr":"79.125.5.243",
"port":9881,
"downloaded":7110656,
"downloadRate":388075.1619170403,
"uploaded":0,
"uploadRate":0
},
{
"typename" : "peerinfo",
"name" : "peer2",
"addr":"54.246.94.172",
"port":9881,
"downloaded":7487488,
"downloadRate":669219.2416082675,
"uploaded":0,
"uploadRate":0
}]
}]
},
"what":"report"
}
var report = require('./report.json');
parseandsavereport(report, report.typename, report.peer, report.timestamp);
function parseandsavereport(obj, name, agentid, timestamp){
for(prop in obj){
console.log(Object.prototype.toString.call( obj[prop] ) );
switch(Object.prototype.toString.call( obj[prop] )){
case '[object Object]' :
parseandsavereport(obj[prop], prop, agentid, report.timestamp);
break;
case '[object Array]' :
for (var i = 0; i < obj[prop].length; i++) {
parseandsavereport(obj[prop][i], obj[prop][i].typename, agentid, report.timestamp);
}
break;
default :
collectionname = name + prop;
save(collectionname, { value: obj[prop], timestamp: timestamp, agentid: agentid });
}
}
}
function save(collectionname, obj){
// Mongo Code should be a called here.
console.log("Saving " + collectionname + " " + JSON.stringify(obj));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment