diff --git a/.gitignore b/isabella_organ/.gitignore similarity index 100% rename from .gitignore rename to isabella_organ/.gitignore diff --git a/README.md b/isabella_organ/README.md similarity index 100% rename from README.md rename to isabella_organ/README.md diff --git a/isabella_organ/gulpfile.js b/isabella_organ/gulpfile.js new file mode 100644 index 0000000..7601c10 --- /dev/null +++ b/isabella_organ/gulpfile.js @@ -0,0 +1,41 @@ +'use strict'; + +var gulp = require('gulp'); +var mocha = require('gulp-mocha'); +var expect = require('chai').expect; +var jshint = require('gulp-jshint'); +var appFiles = ['server.js', './lib/**/*.js']; +var testFiles = ['./test/**/*.js']; + +gulp.task('jshint:test', () => { + return gulp.src(testFiles) + .pipe(jshint({ + node: true, + globals: { + describe: true, + it: true, + before: true, + after: true + } + })) + .pipe(jshint.reporter('default')); +}); + +gulp.task('jshint:app', () => { + return gulp.src(appFiles) + .pipe(jshint({ + node: true + })) + .pipe(jshint.reporter('default')); +}); + + +gulp.task('mocha:test', () => { + return gulp.src(testFiles) + .pipe(mocha({ + reporter: 'spec' })); +}); + +gulp.task('jshint', ['jshint:test', 'jshint:app']); +gulp.task('mocha', ['mocha:test']); +gulp.task('default', ['jshint']); diff --git a/isabella_organ/index.js b/isabella_organ/index.js new file mode 100644 index 0000000..23d2ada --- /dev/null +++ b/isabella_organ/index.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require(__dirname + '/lib/server.js'); diff --git a/isabella_organ/lib/server.js b/isabella_organ/lib/server.js new file mode 100644 index 0000000..1cadcae --- /dev/null +++ b/isabella_organ/lib/server.js @@ -0,0 +1,21 @@ +var express = require('express'); +var app = express(); +var fs = require('fs'); + +app.get('/data/', (req, res) => { + var readStream = fs.createReadStream(__dirname + '/data/post.json'); + res.writeHead(200, { 'Content-Type': 'application/json' }); + readStream.pipe(res); +}); + +app.post('/data/', (req, res) => { + var writeStream = fs.createWriteStream(__dirname + '/data/post.json'); + req.pipe(writeStream); + req.on('end', () => { + res.json({ 'msg': 'hello world' }); + }); +}); + +app.listen(3000, () => { + console.log('server up'); +}); diff --git a/isabella_organ/package.json b/isabella_organ/package.json new file mode 100644 index 0000000..3406442 --- /dev/null +++ b/isabella_organ/package.json @@ -0,0 +1,35 @@ +{ + "name": "isabella_organ", + "version": "1.0.0", + "description": "HTTP server with persistance", + "main": "index.js", + "scripts": { + "test": "node node_modules/argg tests/*.js", + "cover": "istanbul cover --dir reports/coverage node_modules/argg tests/*.js", + "plato": "plato -d reports/plato index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/isabellaorgan/http_with_persistence.git" + }, + "keywords": [ + "HTTP", + "server", + "express", + "node" + ], + "author": "isabellaorgan@gmail.com", + "license": "MIT", + "bugs": { + "url": "https://github.com/isabellaorgan/http_with_persistence/issues" + }, + "homepage": "https://github.com/isabellaorgan/http_with_persistence#readme", + "dependencies": { + "express": "^4.13.3" + }, + "devDependencies": { + "chai": "^3.4.1", + "gulp-mocha": "^2.1.3", + "mocha": "^2.3.3" + } +} diff --git a/isabella_organ/test/test.js b/isabella_organ/test/test.js new file mode 100644 index 0000000..75f7b2e --- /dev/null +++ b/isabella_organ/test/test.js @@ -0,0 +1,31 @@ +var chai = require('chai'); +var expect = require('chai').expect; +var chaihttp = require('chai-http'); +var fs = require('fs'); + +chai.use(chaihttp); + +require(__dirname + '/../lib/server.js'); + +describe('the http server', () => { + it('should respond to a GET request', (done) => { + chai.request('localhost:3000') + .get('/data/') + .end((err, res) => { + expect(err).to.eql(null); + expect(res.body).to.eql('{ "msg": "get data "}'); + done(); + }); + }); + it('should POST to a new file', (done) => { + chai.request('localhost:3000') + .post('/data/post.json') + .send('{ "msg": "hello world" }') + .end((err, res) => { + expect(err).to.eql(null); + expect(res.body).to.eql('{ "msg": "hello world"}'); + done(); + }); + }); + +});