Last active
November 5, 2015 09:36
-
-
Save balasivagnanam/ec1f606f0cbdc0040608 to your computer and use it in GitHub Desktop.
server.js used to create the db
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var app = express(); | |
var formidable = require('formidable'); | |
var path = require('path'); | |
var fs = require('fs'); | |
var checkermain = require('./checkermain.js'); | |
//var loki = require('lokijs'); | |
var low = require('lowdb'); | |
var _ = require('underscore'); | |
var _contrib = require('underscore-contrib') // For getPath() | |
var _db = require('underscore.db') | |
//low._.mixin(_contrib); | |
//low._.mixin(_db); | |
app.get('/', function(req, res) { | |
res.sendFile('portal/standards.html' , { root : __dirname}); | |
}); | |
app.use(express.static('./portal/')); | |
// Optional any deep link calls should return index.html | |
app.use('/*', express.static('standards.html')); | |
app.get('/getCompliance/:filename', function(req, res) { | |
console.log("compliance api called"); | |
console.log(req.params.filename); | |
var AdmZip = require('adm-zip'); | |
var logpath; | |
var dbinstance = low('db.json'); | |
dbinstance._.mixin(require('underscore-contrib')) | |
dbinstance._.mixin(require('underscore.db')) | |
var pagelevel = | |
{ | |
"name": "page-name", | |
"description": "paris", | |
"components": [] | |
}; | |
var page = dbinstance('results').chain().insert(pagelevel).value(); | |
// reading archives | |
var zip = new AdmZip("./project-files/" + req.params.filename); | |
var zipEntries = zip.getEntries(); // an array of ZipEntry records | |
var logpath = './portal/compliance-logs/' + req.params.filename + '.log'; | |
console.log('logpath', logpath); | |
var read = require('fs').readFileSync; | |
zipEntries.forEach(function(zipEntry) { | |
console.log(zipEntry.toString()); // outputs zip entries information | |
console.log(zipEntry.entryName); | |
// var dbfilename = "projectName." + zipEntry.entryName + ".json"; | |
// var db = new loki(dbfilename); | |
// var dbinstance = db.addCollection('components'); | |
var readcont = zip.readAsText(zipEntry.entryName); | |
var html = readcont; | |
//checkermain.initvalues(); | |
var logger = checkermain.getLoggerInstance(req.params.filename); | |
//console.log(html); | |
//disabled to avoid confusion and for testing | |
//var templateName = checkermain.getTemplateName(html, logger); | |
//var commonFileChecks = checkermain.getCommonFilesCheck(zipEntry, html, logger); | |
var componentChecks = checkermain.getComponentCheckResults(zipEntry, html, logger, dbinstance, page); | |
console.log('api ended'); | |
//db.saveDatabase(); | |
// dbinstance.save(); | |
dbinstance.save("portal/compresults/db.json"); | |
}); | |
var split = require('split'); | |
var ndjson = require('ndjson'); | |
var jsonfile = require('jsonfile'); | |
var dataStream = '['; | |
var readpath = './portal/compliance-logs/data' + '-' + req.params.filename + '.json'; | |
var jsonOutput = ''; | |
var i = 0; | |
fs.createReadStream(logpath) | |
.pipe(ndjson.parse()) | |
.on('data', function (obj) { | |
if (i == 0){ | |
i = i + 1; | |
console.log("i is 0"); | |
dataStream += JSON.stringify(obj); | |
} else { | |
console.log("i is else"); | |
var addingcommas = ',' + JSON.stringify(obj); | |
dataStream += addingcommas; | |
} | |
}) | |
.on('error', function(error){ | |
console.log("error here" , error); | |
}) | |
.on('end', function(){ | |
dataStream += ']'; | |
// console.log('end function', dataStream); | |
// console.log(JSON.parse(dataStream)); | |
jsonfile.writeFileSync(readpath, JSON.parse(dataStream)); | |
}) | |
console.log(dataStream); | |
return res.json(jsonOutput); | |
}); | |
app.post('/api/uploadfiles', function(req, res) { | |
console.log("apicalled"); | |
console.log(req.params); | |
var form = new formidable.IncomingForm(); | |
form.parse(req, function (err, fields, files) { | |
var file = files.file; | |
var tempPath = file.path; | |
var targetPath = path.resolve('./project-files/' + file.name); | |
console.log(targetPath) | |
fs.rename(tempPath, targetPath, function (err) { | |
if (err) { | |
throw err | |
} | |
console.log(file.name + " upload complete for user:"); | |
return res.json({path: targetPath}); | |
}) | |
}); | |
}); | |
app.get('/api/dbtesting', function(req, res) { | |
console.log("apicalled fbtest"); | |
var db = new loki('project.json'); | |
var project = db.addCollection('components'); | |
project.insert({name:'overall', legs: 8}); | |
project.insert({name:'tables', legs: 0}); | |
project.insert({name:'zippy', legs: 2}); | |
db.saveDatabase(); | |
return res.send("hello"); | |
}); | |
app.listen(3001); | |
console.log('Listening on port 3001...'); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// this has all the modules and the fucntions to be executed for each page type | |
var bunyan = require('bunyan'); | |
var _ = require('lodash'); | |
var read = require('fs').readFileSync; | |
var cheerio = require('cheerio'); | |
module.exports = { | |
// checks for header rules | |
getCheckHeader: function(filename, passedhtml, log, dbinstance, page){ | |
console.log("header checks"); | |
var html = passedhtml; | |
var filename = "temp name"; | |
var templateName; | |
var log = log; | |
var dbinstance = dbinstance; | |
var page = page; | |
console.log("entered check - header"); | |
console.log("page id is", page.id); | |
log.info("check for MOM header"); | |
$ = cheerio.load(html); | |
//check if the html has header tagName | |
var headerLength = $('body').find('header').length | |
console.log(headerLength); | |
if(headerLength == 0){ | |
log.error("Standard MOM Header is missing. Please have it in all pages"); | |
// dbinstance.insert( { component :'header', | |
// condition : "Standard MOM Header should be present", | |
// result : "Fail" , | |
// remarks: "Missing Standard Header" | |
// }); | |
dbinstance('results').chain().get(page.id).getPath('components').insert({component :'header', | |
condition : "Standard MOM Header should be present", | |
result : "Fail" , | |
remarks: "Missing Standard Header" | |
}).value(); | |
} | |
//check | |
var headerbodyLength = $('header').children().length; | |
console.log(headerbodyLength); | |
var headerbodyLengthInner = $('header div').children().length; | |
console.log(headerbodyLengthInner); | |
if((headerbodyLength > 1) || (headerbodyLengthInner != 3)) { | |
log.error("Standard MOM Header has more elements than the standard. Please Check for it"); | |
dbinstance('results').chain().get(page.id).getPath('components').insert({component :'header', | |
condition : "Standard MOM Header should have only the defined elements", | |
result : "Fail" , | |
remarks: "Standard MOM Header has more elements than the standard" | |
}).value(); | |
} | |
console.log($('header').find('div a').attr('class')); | |
$('header div > a').each(function(){ | |
console.log("enteredoutside"); | |
if(($('header').find('div > a').attr('class') == 'mom-logo') || ($('header').find('div > a').attr('class') == 'gov-logo')){ | |
console.log("entered once"); | |
} else { | |
log.error("Standard MOM Header has extra classes for MOM logo and SG GOV logo"); | |
dbinstance('results').chain().get(page.id).getPath('components').insert({component :'header', | |
condition : "Standard MOM Header should have only the defined logos", | |
result : "Fail" , | |
remarks: "Standard MOM Header has extra classes for MOM logo and SG GOV logo" | |
}).value(); | |
} | |
}); | |
if($('header').find('nav').attr('class') == 'support-links'){ | |
console.log("entered nav"); | |
} else { | |
log.error("Standard MOM Header has extra classes for navigation"); | |
dbinstance('results').chain().get(page.id).getPath('components').insert({component :'header', | |
condition : "Standard MOM Header should have only the defined Navigation", | |
result : "Fail" , | |
remarks: "Standard MOM Header has extra classes for navigation" | |
}).value(); | |
} | |
if($('header div nav').children().length != 3){ | |
log.error("Standard MOM Header navigation has more elements than defined"); | |
dbinstance('results').chain().get(page.id).getPath('components').insert({component :'header', | |
condition : "Standard MOM Header should have only the defined Navigation", | |
result : "Fail" , | |
remarks: "Standard MOM Header navigation has more elements than defined" | |
}).value(); | |
} | |
}, | |
getCheckFooter: function(filename, passedhtml, log){ | |
console.log("footer checks"); | |
var html = passedhtml; | |
var filename = filename; | |
var templateName; | |
var log = log; | |
console.log("entered check - footer"); | |
log.info("check for MOM footer"); | |
$ = cheerio.load(html); | |
//check if the html has footer tagName | |
var footerLength = $('body').find('.module-footer').length | |
console.log(footerLength); | |
if(footerLength == 0){ | |
log.error("Standard MOM footer is missing. Please have it in all pages"); | |
} | |
//check if the html has footer copyrights tagName | |
if($('body').find('.module-footer').length == 0){ | |
log.error("Standard MOM footer copyrights is missing. Please have it in all pages"); | |
} | |
var footerbodyLength = $('.module-footer').children().length; | |
console.log(footerbodyLength); | |
var footerbodyLength = $('.module-footer div').children().length; | |
console.log(footerbodyLength); | |
if((footerbodyLength > 1) || (footerbodyLengthInner > 4)) { | |
log.error("Standard MOM footer has more elements than the standard. Please Check for it"); | |
} | |
var copybodyLength = $('.module-copyright').children().length; | |
console.log(copybodyLength); | |
var copybodyLengthInner = $('.module-copyright div').children().length; | |
console.log(copybodyLength); | |
if((copybodyLength != 1) || (copybodyLengthInner != 2)) { | |
log.error("Standard MOM footer copyrights has more elements than the standard. Please Check for it"); | |
} | |
if($('.module-footer').find('a').attr('class') == 'mom-logo-footer'){ | |
console.log("entered nav"); | |
} else { | |
log.error("Standard MOM Footer has extra classes or missing footer logo"); | |
} | |
//console.log($('header').find('div a').attr('class')); | |
$('.module-footer nav').each(function(){ | |
console.log("enteredoutside"); | |
if(($('.module-footer nav').find('nav').attr('class') == 'nav-social') || ($('.module-footer nav').find('nav').attr('class') == 'nav-site-links')){ | |
console.log("entered once"); | |
} else { | |
log.error("Standard MOM footer has extra classes links in the bottom"); | |
} | |
}); | |
$('.module-copyright p').each(function(){ | |
console.log("enteredoutside"); | |
if(($('.module-copyright').find('p').attr('class') == 'text--copyright') || ($('.module-copyright').find('p').attr('class') == 'rate-mom')){ | |
console.log("entered once"); | |
} else { | |
log.error("Standard MOM footer has extra classes links in the bottom"); | |
} | |
}); | |
} | |
} //end of exports |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment