diff --git a/README.md b/README.md deleted file mode 100644 index 2407f5c..0000000 --- a/README.md +++ /dev/null @@ -1,20 +0,0 @@ -![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 03: Parallel File Processing -=== - -##To Submit this Assignment - * Fork this repository - * Write all of your code in a directory named `lab-` + `` **e.g.** `lab-brian` - * Push to your repository - * Submit a pull request to this repository - * Submit a link to your PR in canvas - * Write a question and observation on canvas - -##Description: - -* For this assignment you will need to read three files and console log the first 8 bytes ***(in hex)*** of each file. - -* Regardless of file size, all three files should be read and logged in the order `'one.txt'`, `'two.txt'`, `'three.txt'`. - -* You will need to include tests that guarantee that the files are logged in the proper order. - -* You will also need to include tests that check for improper file paths. diff --git a/data/one.txt b/data/one.txt new file mode 100644 index 0000000..cd0c7e3 --- /dev/null +++ b/data/one.txt @@ -0,0 +1 @@ +babnsnsnmnmnmnmnmnmnmn file one diff --git a/data/three.txt b/data/three.txt new file mode 100644 index 0000000..eaa3532 --- /dev/null +++ b/data/three.txt @@ -0,0 +1 @@ +hellllllloooooo file three diff --git a/data/two.txt b/data/two.txt new file mode 100644 index 0000000..ef1faf3 --- /dev/null +++ b/data/two.txt @@ -0,0 +1 @@ +askjdhsakjhdkajshdkjashdkajshdk file two diff --git a/index.js b/index.js new file mode 100644 index 0000000..790ff13 --- /dev/null +++ b/index.js @@ -0,0 +1,23 @@ +'use strict'; +var box = []; + +exports.box = box; +// const fs = require('fs'); +const fileReader = require('./lib/file-reader.js'); + +fileReader('./data/one.txt', function(err, data) { + var buff1 = Buffer.from(data).toString('hex').substring(0,8); + console.log(buff1, data); + box.push(buff1); + fileReader('./data/two.txt', function(err, data) { + var buff2 = Buffer.from(data).toString('hex').substring(0,8); + console.log(buff2, data); + box.push(buff2); + fileReader('./data/three.txt', function(err, data) { + var buff3 = Buffer.from(data).toString('hex').substring(0,8); + console.log(buff3, data); + box.push(buff3); + console.log(box ); + }); + }); +}); diff --git a/lib/error-middleware.js b/lib/error-middleware.js new file mode 100644 index 0000000..cd35ac0 --- /dev/null +++ b/lib/error-middleware.js @@ -0,0 +1,29 @@ +'use strict'; + +const createError = require('http-errors'); +const debug = require('debug')('cfgram:error-middleware'); + +module.exports = function(err, req, res, next) { + debug('error middleware'); + + console.error('msg:', err.message); + console.error('name:', err.name); + + if (err.name === 'ValidationError') { + err = createError(400, err.message); + res.status(err.status).send(err.name); + next(); + return; + } + + if (err.status) { + res.status(err.status).send(err.name); + next(); + return; + } + + + err = createError(500, err.message); + res.status(err.status).send(err.name); + next(); +}; diff --git a/lib/file-reader.js b/lib/file-reader.js new file mode 100644 index 0000000..0c67bed --- /dev/null +++ b/lib/file-reader.js @@ -0,0 +1,9 @@ +'use strict'; + +const fs = require('fs'); +const fileReader = module.exports = function(file, callback) { + fs.readFile(file, function(err, data){ + if(err) return callback(err); + return callback(null, data.toString()); + }); +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..1b8ac22 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "03-parallel_file_processing", + "version": "1.0.0", + "description": "![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 03: Parallel File Processing\r ===", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/noahgribbin/03-parallel_file_processing.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/noahgribbin/03-parallel_file_processing/issues" + }, + "homepage": "https://github.com/noahgribbin/03-parallel_file_processing#readme", + "devDependencies": { + "chai": "^3.5.0", + "mocha": "^3.2.0" + } +} diff --git a/test/file-reader-test.js b/test/file-reader-test.js new file mode 100644 index 0000000..f6e0f67 --- /dev/null +++ b/test/file-reader-test.js @@ -0,0 +1,31 @@ +'use strict'; + +const expect = require('chai').expect; +const fileReader = require('../lib/file-reader.js'); +const box = require('box'); + +describe('File Reader Module', function(){ + describe('with an impropper filepath', function(){ + it('should return an error', function(done){ + fileReader(`${__dirname}/not-a-file.txt`, function(err){ + expect(err).to.be.an('error'); + done(); + }); + }); + it('should log the hex values in order', function(done){ + // TODO: test for logs in correct order + // expect(box).to.equal([]); + // + done(); + }); + }); + describe('with a propper file path', function(){ + it('should return the contents of the file', function(done){ + fileReader(`${__dirname}/../data/one.txt`, function(err, data){ + expect(err).to.equal(null); + expect(data).to.equal('this is the first file\r\n'); + done(); + }); + }); + }); +});