Created
August 17, 2015 16:41
-
-
Save Pajk/a9de3af59fbdc05fb440 to your computer and use it in GitHub Desktop.
learnyounode solutions
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
| // solutions to learnyounode tutorial from http://nodeschool.io/#workshopper-list | |
| // READING ARGS | |
| // var args = process.argv.slice(2), | |
| // sum = args.reduce(function(sum, arg) { return sum + Number(arg); }, 0) | |
| // | |
| // console.log(sum) | |
| // READING FILE SYNC | |
| // var fs = require('fs'), | |
| // fileBuffer = fs.readFileSync(process.argv[2]), | |
| // lines = fileBuffer.toString().split('\n').length - 1 | |
| // console.log(lines) | |
| // READING FILE ASYNC | |
| // var fs = require('fs') | |
| // fs.readFile(process.argv[2], 'utf8', function(error, data) { | |
| // lines = data.split('\n').length - 1 | |
| // console.log(lines) | |
| // }); | |
| // READING DIR | |
| // var fs = require('fs'), | |
| // path = require('path'), | |
| // dir = process.argv[2], | |
| // extension = '.'+process.argv[3] | |
| // fs.readdir(dir, function(error, list) { | |
| // list.forEach(function(file) { | |
| // if (path.extname(file) == extension) { | |
| // console.log(file) | |
| // } | |
| // }) | |
| // }) | |
| // modules | |
| // var filterdir = require('./filterdir'), | |
| // dir = process.argv[2], | |
| // extension = process.argv[3] | |
| // filterdir(dir, extension, function(err, data) { | |
| // if (err) | |
| // return console.error("Thre was an error: ", err) | |
| // | |
| // data.forEach(function(file) { | |
| // console.log(file) | |
| // }) | |
| // }) | |
| // filterdir.js: | |
| // var fs = require('fs'), | |
| // path = require('path') | |
| // | |
| // module.exports = function(dir, extension, callback) { | |
| // fs.readdir(dir, function(error, files) { | |
| // if (error) | |
| // return callback(error) | |
| // | |
| // var filteredFiles = files.filter(function(file) { | |
| // return path.extname(file) == '.' + extension | |
| // }) | |
| // | |
| // callback(null, filteredFiles) | |
| // }) | |
| // } | |
| // HTTP client | |
| // var http = require('http') | |
| // http.get(process.argv[2], function(res) { | |
| // res.setEncoding('utf8') | |
| // res.on("data", console.log) | |
| // res.on("error", console.error) | |
| // }) | |
| // http client read whole page | |
| // var http = require('http') | |
| // http.get(process.argv[2], function(res) { | |
| // res.setEncoding('utf8') | |
| // var content = ""; | |
| // res.on("data", function(data) { | |
| // content += data | |
| // }) | |
| // res.on("error", console.error) | |
| // res.on("end", function() { | |
| // console.log(content.length) | |
| // console.log(content) | |
| // }) | |
| // }) | |
| // ASYNC - fetch 3 pages and print them in the right order | |
| // var http = require('http') | |
| // var args = process.argv.slice(2) | |
| // var downloadAll = function(urls, callback) { | |
| // var done = 0, pages = []; | |
| // for (var i = 0; i < urls.length; i++) { | |
| // pages[i] = '' | |
| // } | |
| // | |
| // urls.forEach(function(url, index) { | |
| // http.get(url, function(res) { | |
| // res.setEncoding('utf8') | |
| // res.on("data", function(data) { | |
| // pages[index] += data | |
| // }) | |
| // res.on("error", callback) | |
| // res.on("end", function() { | |
| // done++ | |
| // if (done == urls.length) | |
| // return callback(null, pages) | |
| // }) | |
| // }) | |
| // }) | |
| // } | |
| // downloadAll(args, function(err, data) { | |
| // for (var i in data) | |
| // console.log(data[i]) | |
| // }) | |
| // TIME TCP SERVER | |
| // var net = require('net') | |
| // var port = Number(process.argv[2]) | |
| // var zeroFill = function(i) { | |
| // return (i < 10 ? '0' : '') + i | |
| // } | |
| // var now = function() { | |
| // var d = new Date() | |
| // return d.getFullYear() + '-' | |
| // + zeroFill(d.getMonth() + 1) + '-' | |
| // + zeroFill(d.getDate()) + ' ' | |
| // + zeroFill(d.getHours()) + ':' | |
| // + zeroFill(d.getMinutes()) | |
| // } | |
| // var server = net.createServer(function (socket) { | |
| // socket.end(now() + '\n') | |
| // }) | |
| // server.listen(port) | |
| // HTTP FILE SERVER | |
| // var http = require('http'), | |
| // fs = require('fs') | |
| // var port = Number(process.argv[2]) | |
| // var filePath = process.argv[3] | |
| // var server = http.createServer(function(req, res) { | |
| // res.writeHead(200, { 'content-type': 'text/plain' }) | |
| // fs.createReadStream(filePath).pipe(res) | |
| // }) | |
| // server.listen(port) | |
| // HTTP UPPERCASERER | |
| // var http = require('http') | |
| // var map = require('through2-map') | |
| // var port = Number(process.argv[2]) | |
| // var server = http.createServer(function(req, res) { | |
| // req.pipe(map(function (chunk) { | |
| // return chunk.toString().toUpperCase() | |
| // })).pipe(res) | |
| // }) | |
| // server.listen(port) | |
| // HTTP API SERVER - iso time parser | |
| var http = require('http') | |
| var map = require('through2-map') | |
| var port = Number(process.argv[2]) | |
| var url = require('url') | |
| var parsetime = function(date) { | |
| return { | |
| 'hour': date.getHours(), | |
| 'minute': date.getMinutes(), | |
| 'second': date.getSeconds() | |
| } | |
| } | |
| var unixtime = function(date) { | |
| return { | |
| 'unixtime': date.getTime() | |
| } | |
| } | |
| var server = http.createServer(function(req, res) { | |
| var parsedUrl = url.parse(req.url, true) | |
| var time = new Date(parsedUrl.query.iso) | |
| var result = null | |
| if (parsedUrl.pathname == '/api/parsetime') { | |
| result = parsetime(time) | |
| } else if (parsedUrl.pathname == '/api/unixtime') { | |
| result = unixtime(time) | |
| } | |
| if (result) { | |
| res.writeHead(200, {'Content-Type': 'application/json'}) | |
| res.end(JSON.stringify(result)) | |
| } else { | |
| res.writeHead(404) | |
| res.end() | |
| } | |
| }) | |
| server.listen(port) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment