Created
February 6, 2015 16:21
-
-
Save woolfi182/1ddf99eaaf7afb2e4119 to your computer and use it in GitHub Desktop.
tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module.exports = function(database,fs){ | |
| return [ | |
| { | |
| match: function(obj){ | |
| return true; | |
| }, | |
| callback: function(obj, socket){ | |
| socket.write(JSON.stringify(obj)+'\n'); | |
| } | |
| } | |
| ] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Module that realises database interface | |
| // "Private" in module var storage - in-memory database | |
| var storage = { | |
| users: { | |
| 'id1': { | |
| firstName: 'Vasily', | |
| lastName: 'Pupkin', | |
| age: 20, | |
| password: '123' | |
| }, | |
| id2: { | |
| firstName: 'Petr', | |
| lastName: 'Pepkin', | |
| age: 32, | |
| password: 'abc' | |
| } | |
| }, | |
| sessions: [] | |
| }; | |
| // Object implementing database interface | |
| var database = { | |
| sessions: { | |
| // Creates session using userId(userId is the same as login) | |
| // id of created session returns to callback | |
| create: function(userId, callback){ | |
| database.users.getById(userId, function(err, user){ | |
| if(err) { | |
| callback(err); | |
| } else { | |
| storage.sessions.push({ | |
| sessionId: storage.sessions.length.toString(), | |
| userId: userId | |
| }); | |
| callback(null, | |
| storage.sessions[storage.sessions.length-1].sessionId); | |
| } | |
| }); | |
| }, | |
| // get session object by sessionId or error if session is invalid | |
| getById: function(sessionId, callback){ | |
| if(storage.sessions[sessionId]) { | |
| callback(null, storage.sessions[sessionId]); | |
| } else { | |
| callback({ | |
| error: "Invalid session" | |
| }); | |
| } | |
| } | |
| }, | |
| users: { | |
| // get user object by userId(login) or error if user not exists | |
| getById: function(userId, callback){ | |
| if(storage.users[userId]) { | |
| callback(null, storage.users[userId]); | |
| } else { | |
| callback({ | |
| error: 'User not exists' | |
| }); | |
| } | |
| }, | |
| // if user exists and password correct, return null as error to callback | |
| auth: function(userId, password, callback){ | |
| database.users.getById(userId, function(err, user){ | |
| if(err){ | |
| callback(err); | |
| } else { | |
| if(user.password===password) { | |
| callback(null); | |
| } else { | |
| callback({ | |
| error: 'Invalid password' | |
| }) | |
| } | |
| } | |
| }); | |
| } | |
| } | |
| }; | |
| // return database object as module | |
| module.exports = database; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module.exports = function(net) { | |
| return function(config,port) { | |
| net.createServer(function(socket){ | |
| //socket.pipe(process.stdout); | |
| //socket.pipe(socket); | |
| var buffer = ''; | |
| socket.on('data', function(data){ | |
| buffer+=data; | |
| var arr = buffer.split('\n'); | |
| if(arr.length==2){ | |
| var message = arr[0]; | |
| buffer=arr[1]; | |
| try { | |
| var obj = JSON.parse(message); | |
| if(!(function(){ | |
| for(var i=0; i<config.length; i++){ | |
| var handler = config[i]; | |
| if(handler.match(obj)){ | |
| handler.callback(obj, socket); | |
| return true; | |
| } | |
| } | |
| return false; | |
| })()){ | |
| socket.write(JSON.stringify({ | |
| error: "Invalid request" | |
| })+'\n'); | |
| } | |
| } catch (e) { | |
| socket.write(JSON.stringify({ | |
| error: "Invalid JSON" | |
| })+'\n'); | |
| } | |
| } | |
| }); | |
| }).listen(port); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var net = require("net"), | |
| database = require("./database.js"), | |
| fs = require("fs"), | |
| config = require("./config")(database,fs), | |
| router = require("./router.js")(net); | |
| router(config,8080) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment