From c9b54c17cb434c2d514a521038b9f853ec1b1088 Mon Sep 17 00:00:00 2001 From: Aliza Pilisuk Date: Thu, 19 May 2016 09:55:36 -0700 Subject: [PATCH 1/5] initial commit --- aliza/gulpfile.js | 0 aliza/index.html | 0 aliza/lib/server.js | 70 +++++++++++++++++++++++++++++++++++++++++++++ aliza/package.json | 21 ++++++++++++++ aliza/test/test.js | 0 5 files changed, 91 insertions(+) create mode 100644 aliza/gulpfile.js create mode 100644 aliza/index.html create mode 100644 aliza/lib/server.js create mode 100644 aliza/package.json create mode 100644 aliza/test/test.js diff --git a/aliza/gulpfile.js b/aliza/gulpfile.js new file mode 100644 index 0000000..e69de29 diff --git a/aliza/index.html b/aliza/index.html new file mode 100644 index 0000000..e69de29 diff --git a/aliza/lib/server.js b/aliza/lib/server.js new file mode 100644 index 0000000..b25dadf --- /dev/null +++ b/aliza/lib/server.js @@ -0,0 +1,70 @@ +'use strict'; +const http = require('http'); +const fs = require('fs'); +const stream = require('stream'); +const jsonParse = require('./promise'); + +http.createServer((req, res) => { + if (req.url === '/' && req.method === 'GET') { + let file = fs.createReadStream(__dirname + '/data/data.json'); + file.pipe(res); + } else if (req.url === '/' && req.method === 'POST') { + let bufArr = []; + let bufStr = ''; + req.on('data', (data) => { + bufArr.push(data); + bufStr += data.toString(); + }); + + req.on('end', () => { + let str = bufArr.toString(); //array of buffers to string + let jsonObj = {}; + + jsonParse(str).then((data) =>{ //data is a json obj + let validString = JSON.stringify(data); + //TODO error handling file write + let file = fs.createWriteStream(__dirname + '/data/data.json'); + let bufferStream = new stream.PassThrough(); + let inBuf = new Buffer(validString); + bufferStream.end(inBuf); + bufferStream.pipe(file); + + res.statusCode = 200; + res.end('data written to file\n'); + + }, (err) =>{ + res.statusCode = 400; + res.end('err'); + console.log(err); + }); + + + + + + + + }); + + + + // validate json + + + // write to file + + + } else { + //TODO deal with not found + res.status = 404; + res.end('File not found\n'); + + } + + + + + +}).listen(3000, () => { + console.log('server up at 3000'); +}); diff --git a/aliza/package.json b/aliza/package.json new file mode 100644 index 0000000..e2ba067 --- /dev/null +++ b/aliza/package.json @@ -0,0 +1,21 @@ +{ + "name": "aliza", + "version": "1.0.0", + "description": "", + "main": "promise.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "chai": "^3.5.0", + "gulp": "^3.9.1", + "gulp-eslint": "^2.0.0" + } +} diff --git a/aliza/test/test.js b/aliza/test/test.js new file mode 100644 index 0000000..e69de29 From 98785cd29102eef1f59b12e69608e718bfa35d7a Mon Sep 17 00:00:00 2001 From: Aliza Pilisuk Date: Thu, 19 May 2016 10:31:43 -0700 Subject: [PATCH 2/5] removed try catch --- aliza/package.json | 5 ++++- aliza/server.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 aliza/server.js diff --git a/aliza/package.json b/aliza/package.json index e2ba067..5dc7827 100644 --- a/aliza/package.json +++ b/aliza/package.json @@ -15,7 +15,10 @@ "license": "ISC", "devDependencies": { "chai": "^3.5.0", + "chai-http": "^2.0.1", "gulp": "^3.9.1", - "gulp-eslint": "^2.0.0" + "gulp-eslint": "^2.0.0", + "gulp-mocha": "^2.2.0", + "mocha": "^2.4.5" } } diff --git a/aliza/server.js b/aliza/server.js new file mode 100644 index 0000000..3dfe23a --- /dev/null +++ b/aliza/server.js @@ -0,0 +1,34 @@ +'use strict'; +const fs = require('fs'); +const http = require('http'); +const stream = require('stream'); + +http.createServer((req, res) => { + if (req.url === '/notes' && req.method === 'GET'){ + let file = fs.createReadStream(__dirname + '/data/data.json'); + file.pipe(res); + } else if (req.url === '/notes' && req.method === 'POST'){ + let bufArr = []; + let bufStr = ''; + req.on('data', (data) => { + bufArr.push(data); + bufStr += data.toString(); + }); + req.on('end', () => { + let str = bufArr.toString(); + let jsonObj = {}; + let file = fs.createWriteStream(__dirname + '/data/data.json'); + let bufferStream = new stream.PassThrough(); + let inBuf = new Buffer(bufStr); + bufferStream.end(inBuf); + bufferStream.pipe(file); + res.statusCode = 200; + res.end('data written to file\n'); + }); + } else { + res.status = 404; + res.end('File not found\n'); + } +}).listen(3000, () => { + console.log('server up at 3000'); +}); From 6e33d9e4e106eb50278c3176c108101ed7938b29 Mon Sep 17 00:00:00 2001 From: Aliza Pilisuk Date: Thu, 19 May 2016 11:10:32 -0700 Subject: [PATCH 3/5] writing to a new file each time --- aliza/index.html | 0 aliza/lib/server.js | 70 --------------------------------------------- aliza/server.js | 17 ++++++----- 3 files changed, 8 insertions(+), 79 deletions(-) delete mode 100644 aliza/index.html delete mode 100644 aliza/lib/server.js diff --git a/aliza/index.html b/aliza/index.html deleted file mode 100644 index e69de29..0000000 diff --git a/aliza/lib/server.js b/aliza/lib/server.js deleted file mode 100644 index b25dadf..0000000 --- a/aliza/lib/server.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; -const http = require('http'); -const fs = require('fs'); -const stream = require('stream'); -const jsonParse = require('./promise'); - -http.createServer((req, res) => { - if (req.url === '/' && req.method === 'GET') { - let file = fs.createReadStream(__dirname + '/data/data.json'); - file.pipe(res); - } else if (req.url === '/' && req.method === 'POST') { - let bufArr = []; - let bufStr = ''; - req.on('data', (data) => { - bufArr.push(data); - bufStr += data.toString(); - }); - - req.on('end', () => { - let str = bufArr.toString(); //array of buffers to string - let jsonObj = {}; - - jsonParse(str).then((data) =>{ //data is a json obj - let validString = JSON.stringify(data); - //TODO error handling file write - let file = fs.createWriteStream(__dirname + '/data/data.json'); - let bufferStream = new stream.PassThrough(); - let inBuf = new Buffer(validString); - bufferStream.end(inBuf); - bufferStream.pipe(file); - - res.statusCode = 200; - res.end('data written to file\n'); - - }, (err) =>{ - res.statusCode = 400; - res.end('err'); - console.log(err); - }); - - - - - - - - }); - - - - // validate json - - - // write to file - - - } else { - //TODO deal with not found - res.status = 404; - res.end('File not found\n'); - - } - - - - - -}).listen(3000, () => { - console.log('server up at 3000'); -}); diff --git a/aliza/server.js b/aliza/server.js index 3dfe23a..ec8f62b 100644 --- a/aliza/server.js +++ b/aliza/server.js @@ -5,30 +5,29 @@ const stream = require('stream'); http.createServer((req, res) => { if (req.url === '/notes' && req.method === 'GET'){ - let file = fs.createReadStream(__dirname + '/data/data.json'); - file.pipe(res); + fs.readdir(__dirname + '/notes/', (err, files) => { + res.write(files.toString()) + res.end('files listed'); + }); } else if (req.url === '/notes' && req.method === 'POST'){ - let bufArr = []; let bufStr = ''; req.on('data', (data) => { - bufArr.push(data); bufStr += data.toString(); }); req.on('end', () => { - let str = bufArr.toString(); - let jsonObj = {}; - let file = fs.createWriteStream(__dirname + '/data/data.json'); + var nextFile = fs.readdirSync(__dirname + '/notes/').length + 1; + let file = fs.createWriteStream(__dirname + '/notes/' + nextFile + '.json'); let bufferStream = new stream.PassThrough(); let inBuf = new Buffer(bufStr); bufferStream.end(inBuf); bufferStream.pipe(file); res.statusCode = 200; - res.end('data written to file\n'); + res.end('data written to file \n'); }); } else { res.status = 404; res.end('File not found\n'); } }).listen(3000, () => { - console.log('server up at 3000'); + console.log('server up at 3000 \n'); }); From 3f9e695f0b5d35978b7f29a10a78380f41698b7c Mon Sep 17 00:00:00 2001 From: Aliza Pilisuk Date: Thu, 19 May 2016 11:53:54 -0700 Subject: [PATCH 4/5] added post test --- aliza/gulpfile.js | 19 +++++++++++++++++++ aliza/server.js | 4 ++-- aliza/test/test.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/aliza/gulpfile.js b/aliza/gulpfile.js index e69de29..4d21f34 100644 --- a/aliza/gulpfile.js +++ b/aliza/gulpfile.js @@ -0,0 +1,19 @@ +const gulp = require('gulp'); +const eslint = require('gulp-eslint'); +const mocha = require ('gulp-mocha'); + +gulp.task('default', ['lint', 'mocha'], () => { + console.log('default for lint and mocha'); +}); + + +gulp.task('lint', () => { + gulp.src('/*.js') + .pipe(eslint({})) + .pipe(eslint.format()) +}); + +gulp.task('mocha', () => { + gulp.src('test/test.js') + .pipe(mocha()); +}); diff --git a/aliza/server.js b/aliza/server.js index ec8f62b..6c32687 100644 --- a/aliza/server.js +++ b/aliza/server.js @@ -6,8 +6,8 @@ const stream = require('stream'); http.createServer((req, res) => { if (req.url === '/notes' && req.method === 'GET'){ fs.readdir(__dirname + '/notes/', (err, files) => { - res.write(files.toString()) - res.end('files listed'); + res.write(files.toString() + '\n') + res.end('files listed \n'); }); } else if (req.url === '/notes' && req.method === 'POST'){ let bufStr = ''; diff --git a/aliza/test/test.js b/aliza/test/test.js index e69de29..e67b152 100644 --- a/aliza/test/test.js +++ b/aliza/test/test.js @@ -0,0 +1,38 @@ +const fs = require('fs'); +const chai = require('chai'); +const chaiHTTP = require('chai-http'); +const expect = chai.expect; +chai.use(chaiHTTP); +const request = chai.request; +var fileArr = []; +var newFileArr = []; + +require('../server'); + +describe('HTTP tests', () => { + before('reading files in notes directory', () => { + fileArr = fs.readdirSync(__dirname + '/../notes'); + console.log(fileArr); + }); + it('should read file names on get request', (done) => { + request('localhost:3000') + .get('/notes') + .end((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql(fs.readdirSync(__dirname + '/../notes').toString() + '\n' + 'files listed \n'); + done(); + }); + }); + it('should post to new file on post request', (done) => { + request('localhost:3000') + .post('/notes') + .send('{"blah": "blah"}') + .end((err, res) => { + newFileArr = fs.readdirSync(__dirname + '/../notes'); + expect(err).to.eql(null); + expect(newFileArr).to.not.eql(fileArr); + done(); + }) + }) +}); From 0c83a413f83558345fc86c9d6416a8f4617f562a Mon Sep 17 00:00:00 2001 From: Aliza Pilisuk Date: Thu, 19 May 2016 12:04:48 -0700 Subject: [PATCH 5/5] removed console.log --- aliza/test/test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/aliza/test/test.js b/aliza/test/test.js index e67b152..3d392a5 100644 --- a/aliza/test/test.js +++ b/aliza/test/test.js @@ -12,7 +12,6 @@ require('../server'); describe('HTTP tests', () => { before('reading files in notes directory', () => { fileArr = fs.readdirSync(__dirname + '/../notes'); - console.log(fileArr); }); it('should read file names on get request', (done) => { request('localhost:3000')