Plato on Github
Report Home
lib/checkers/file.js
Maintainability
74.28
Lines of code
42
Difficulty
10.43
Estimated Errors
0.28
Function weight
By Complexity
By SLOC
var checker = require('../checker'), fs = require('fs'), Result = require('../result'), validator = require('validator'); /** * Health check a file resource. * * @param {Object} setup: file check setup with fields: * - uri: a resource URI to check * - mode: a 3-digit file mode, e.g. 777, 644 * @param {Function} cb: standard cb(err, result) callback */ function check(setup, cb) { fs.lstat(setup.uri.replace(/^file\:\/\//, ''), function (err, stats) { var result = new Result(); if (err) { result.addError(err.message); } else { var modeString = parseInt(stats.mode.toString(8), 10).toString(), mode = modeString.slice(modeString.length - 3, modeString.length); checker.checkAttribute('mode', setup, _checkMode(mode), result); } result.setStatusByStats(); cb(null, result); }); } function _checkMode(actual) { return function (expected) { if (validator.matches(actual, new RegExp(expected))) { return 'Mode ' + actual + ' as expected'; } else { throw new Error('Mode ' + actual + ' does not match the expected ' + expected); } }; } exports.check = check;