Fossology Data Collector


Description

This collector scrapes Fossology reports to extract licensing and copyright metrics from them.

Collect Function
function collect(fossologyServerUrl, fossologyId) {

var Fs = require('fs');
var _ = require('underscore');
var scraperjs = require('scraperjs');
var url = fossologyServerUrl + '?mod=license&fossologyId';
var projectMetrics = {};

scraperjs.DynamicScraper.create(url).scrape(function() {
 return $("#lichistogram td").map(function() {
   return $(this).text();
  }).get();
}, function(data) {
 var fossologyReport = {
   licenses: []
  };
 for (var i = 0; i < data.length; i += 3) {
   var name = data[i + 2];
   fossologyReport.licenses.push({
     name: name,
     count: data[i],
     concluded: data[i + 1],
    });
   if (name == 'No_license_found') {
     fossologyReport.noLicenseCount = data[i];
    }
  }

 scraperjs.DynamicScraper.create(url).scrape(function() {
   return $("#licsummary td").map(function() {
     return $(this).text();
    }).get();
  }, function(data) {

   fossologyReport.fileCount = data[2];

   projectMetrics['fossology'] = fossologyReport;
  
});

return projectMetrics;