diff --git a/isabella_organ/.gitignore b/isabella_organ/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/isabella_organ/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/isabella_organ/gulpfile.js b/isabella_organ/gulpfile.js new file mode 100644 index 0000000..32da9de --- /dev/null +++ b/isabella_organ/gulpfile.js @@ -0,0 +1,40 @@ +'use strict'; + +var gulp = require('gulp'); +var mocha = require('gulp-mocha'); +var jshint = require('gulp-jshint'); +var request = require('superagent'); +var chai = require('chai'); +var chaiHttp = require('chai-http'); +var appFiles = ['tcp_server.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('mochatest', () => { + return gulp.src('test/*.js') + .pipe(mocha({ reporter: 'nyan' })); +}); + +gulp.task('jshint', ['jshint:test', 'jshint:app']); +gulp.task('default', ['jshint', 'mochatest']); diff --git a/isabella_organ/package.json b/isabella_organ/package.json new file mode 100644 index 0000000..05ddee1 --- /dev/null +++ b/isabella_organ/package.json @@ -0,0 +1,37 @@ +{ + "name": "isabella_organ", + "version": "1.0.0", + "description": "TCP Server", + "main": "tcp_server.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/isabellaorgan/create_a_tcp_server.git" + }, + "keywords": [ + "tcp", + "server", + "node", + "superagent" + ], + "author": "isabellaorgan@gmail.com", + "license": "ISC", + "bugs": { + "url": "https://github.com/isabellaorgan/create_a_tcp_server/issues" + }, + "homepage": "https://github.com/isabellaorgan/create_a_tcp_server#readme", + "devDependencies": { + "chai": "^3.4.0", + "gulp": "^3.9.0", + "gulp-jshint": "^1.12.0", + "gulp-mocha": "^2.1.3", + "mocha": "^2.3.3", + "superagent": "^1.4.0", + "superagent-cli": "^2.0.0" + } +} diff --git a/isabella_organ/tcp_server.js b/isabella_organ/tcp_server.js new file mode 100644 index 0000000..11bf903 --- /dev/null +++ b/isabella_organ/tcp_server.js @@ -0,0 +1,24 @@ +'use strict'; + +var net = require('net'); +var fs = require('fs'); + + +var server = net.createServer((socket) => { + socket.on('data', (data) => { + fs.writeFile('uniquefile.log' + new Date().toString(), data.toString(), (err) => { + if (err) return console.log(err); + }); + socket.write('some unique thing'); + console.log('write to file'); + }); + + socket.on('end', () => { + console.log('disconnected'); + socket.end(); + }); +}); + +server.listen('3000', () => { + console.log('server up'); +}); diff --git a/isabella_organ/test/test.js b/isabella_organ/test/test.js new file mode 100644 index 0000000..ff48384 --- /dev/null +++ b/isabella_organ/test/test.js @@ -0,0 +1,21 @@ +var fs = require('fs'); +var net = require('net'); +var request = require('superagent'); +var chai = require('chai'); +var chaiHttp = require('chai-http'); +chai.use(chaiHttp); +var expect = chai.expect; +var server = require(__dirname + '/../tcp_server.js'); + + +describe('tcp server', () => { + it('should receive requests and save them to a file', (done) => { + chai.request('localhost:3000') + .get('/something') + .end((err, socket) => { + expect(err).to.eql(null); + expect(socket.text).to.eql('some unique thing'); + }); + done(); + }); +}); diff --git a/isabella_organ/uniquefile.logTue Nov 03 2015 11:17:06 GMT-0800 (PST) b/isabella_organ/uniquefile.logTue Nov 03 2015 11:17:06 GMT-0800 (PST) new file mode 100644 index 0000000..5eba3b7 --- /dev/null +++ b/isabella_organ/uniquefile.logTue Nov 03 2015 11:17:06 GMT-0800 (PST) @@ -0,0 +1,9 @@ +GET / HTTP/1.1 +Host: localhost:3000 +Connection: keep-alive +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 +Upgrade-Insecure-Requests: 1 +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 +Accept-Encoding: gzip, deflate, sdch +Accept-Language: en-US,en;q=0.8 + diff --git a/isabella_organ/uniquefile.logTue Nov 03 2015 12:02:52 GMT-0800 (PST) b/isabella_organ/uniquefile.logTue Nov 03 2015 12:02:52 GMT-0800 (PST) new file mode 100644 index 0000000..6e71fbd --- /dev/null +++ b/isabella_organ/uniquefile.logTue Nov 03 2015 12:02:52 GMT-0800 (PST) @@ -0,0 +1,6 @@ +GET /something HTTP/1.1 +Host: localhost:3000 +Accept-Encoding: gzip, deflate +User-Agent: node-superagent/0.19.1 +Connection: close +