From 5e76586bc10170841ca1920022fe1d841a6283f8 Mon Sep 17 00:00:00 2001 From: DAVID PARK Date: Wed, 4 Nov 2015 12:23:04 -0800 Subject: [PATCH] added all files necessary for hw assignment --- david_park/.gitignore | 1 + david_park/gulpfile.js | 35 +++++++++++++++++++++++++++++ david_park/gulpfile.js~ | 34 ++++++++++++++++++++++++++++ david_park/package.json | 22 ++++++++++++++++++ david_park/public/greet.html | 14 ++++++++++++ david_park/public/index.html | 14 ++++++++++++ david_park/server.js | 41 ++++++++++++++++++++++++++++++++++ david_park/test/server_test.js | 34 ++++++++++++++++++++++++++++ 8 files changed, 195 insertions(+) create mode 100644 david_park/.gitignore create mode 100644 david_park/gulpfile.js create mode 100644 david_park/gulpfile.js~ create mode 100644 david_park/package.json create mode 100644 david_park/public/greet.html create mode 100644 david_park/public/index.html create mode 100644 david_park/server.js create mode 100644 david_park/test/server_test.js diff --git a/david_park/.gitignore b/david_park/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/david_park/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/david_park/gulpfile.js b/david_park/gulpfile.js new file mode 100644 index 0000000..172c2c0 --- /dev/null +++ b/david_park/gulpfile.js @@ -0,0 +1,35 @@ +var gulp = require('gulp'); +var jshint = require('gulp-jshint'); +var mocha = require('gulp-mocha'); +var publicFiles = ['index.js', 'public/**/*.js', 'bin/**/*.js']; +var testFiles = ['test/**/*.js']; + +gulp.task('mocha:test', function() { + return gulp.src(testFiles, {read:false}) + .pipe(mocha({reporter: 'nyan'})); +}); + +gulp.task('jshint:test', function() { + return gulp.src(testFiles) + .pipe(jshint({ + node: true, + globals: { + describe: true, + it: true, + before: true, + after: true + } + })) + .pipe(jshint.reporter('default')); +}); + +gulp.task('jshint:public', function() { + return gulp.src(publicFiles) + .pipe(jshint({ + node:true + })) + .pipe(jshint.reporter('default')); +}) + +gulp.task('jshint-mocha', ['jshint:test', 'jshint:public', 'mocha:test']); +gulp.task('default', ['jshint-mocha']) diff --git a/david_park/gulpfile.js~ b/david_park/gulpfile.js~ new file mode 100644 index 0000000..e545aa9 --- /dev/null +++ b/david_park/gulpfile.js~ @@ -0,0 +1,34 @@ +var gulp = require('gulp'); +var jshint = require('gulp-jshint'); +var publicFiles = ['index.js', 'public/**/*.js', 'bin/**/*.js']; +var testFiles = ['test/**/*.js']; + +gulp.task('mocha:test', function() { + return gulp.src(testFiles, {read:false}) + .pipe(mocha({reporter: 'nyan'})); +}); + +gulp.task('jshint:test', function() { + return gulp.src(testFiles) + .pipe(jshint({ + node: true, + globals: { + describe: true, + it: true, + before: true, + after: true + } + })) + .pipe(jshint.reporter('default')); +}); + +gulp.task('jshint:public', function() { + return gulp.src(publicFiles) + .pipe(jshint({ + node:true + })) + .pipe(jshint.reporter('default')); +}) + +gulp.task('jshint-mocha', ['jshint:test', 'jshint:public', 'mocha:test']); +gulp.task('default', ['jshint-mocha']) diff --git a/david_park/package.json b/david_park/package.json new file mode 100644 index 0000000..ffeda36 --- /dev/null +++ b/david_park/package.json @@ -0,0 +1,22 @@ +{ + "name": "http_server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "chai": "^3.4.0", + "chai-http": "^1.0.0", + "gulp": "^3.9.0", + "gulp-jshint": "^1.12.0", + "gulp-mocha": "^2.1.3", + "mocha": "^2.3.3" + } +} diff --git a/david_park/public/greet.html b/david_park/public/greet.html new file mode 100644 index 0000000..57f8a52 --- /dev/null +++ b/david_park/public/greet.html @@ -0,0 +1,14 @@ + + + + Greetings! + + + +
+ + +
+ + + diff --git a/david_park/public/index.html b/david_park/public/index.html new file mode 100644 index 0000000..23589f8 --- /dev/null +++ b/david_park/public/index.html @@ -0,0 +1,14 @@ + + + + + + AWESOME HTTP SERVER + + +

AWESOME HTTP SERVER!

+

Request Time: Go to localhost:3000/time

+

Greet: Go to localhost:3000/greet

+

Greet Name: Go to localhost:3000/greet/name

+ + diff --git a/david_park/server.js b/david_park/server.js new file mode 100644 index 0000000..e749f3a --- /dev/null +++ b/david_park/server.js @@ -0,0 +1,41 @@ +var http = require('http'); +var fs = require('fs'); +var ReadStream = require('stream').Readable; + +var server = http.createServer(function(req, res) { + var resData = {}; + if (req.url === '/' && req.method === 'GET') { + resData.status = 200; + resData.contentType = 'text/html'; + resData.data = fs.readFileSync(__dirname + '/public/index.html').toString(); + } + + if (req.url === '/time' && req.method === 'GET') { + resData.status = 200; + resData.contentType = 'text/html'; + resData.data = Date(); + //resData.data = JSON.stringify({hello: 'world'}); + } + + if (req.url === '/greet' && req.method === 'GET') { + resData.status = 200; + resData.contentType = 'text/html'; + resData.data = fs.readFileSync(__dirname + '/public/greet.html'); + } + + /*if (req.url === '/greet/name' && req.method === 'GET') { + res.Data.status = 200; + resData.contentType = "application/json"; + resData.data = //JSON.stringify({hello: 'NAME'}) + }*/ + + res.writeHead(resData.status || 404, { + 'Content-Type': resData.contentType || 'text/plain' + }); + res.write(resData.data || 'not found'); + res.end(); +}); + +server.listen(3000, function() { + console.log('server up'); +}); diff --git a/david_park/test/server_test.js b/david_park/test/server_test.js new file mode 100644 index 0000000..964763f --- /dev/null +++ b/david_park/test/server_test.js @@ -0,0 +1,34 @@ +var chai = require('chai'); +var chaihttp = require('chai-http'); +chai.use(chaihttp); +var expect = chai.expect; +var fs = require('fs'); +require(__dirname + '/../server'); + +describe('our server', function() { + before(function() { + this.indexFileString = fs.readFileSync(__dirname + '/../public/index.html').toString(); + }); + + it('should be able to get an index', function(done) { + chai.request('localhost:3000') + .get('/') + .end(function(err, res) { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql(this.indexFileString); + done(); + }.bind(this)); + }); + + it('should be able to get the time', function(done) { + chai.request('localhost:3000') + .get('/time') + .end(function(err, res) { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql(Date()); + done(); + }); + }); +});