Skip to content

Instantly share code, notes, and snippets.

@Pajk
Created August 17, 2015 16:41
Show Gist options
  • Select an option

  • Save Pajk/a9de3af59fbdc05fb440 to your computer and use it in GitHub Desktop.

Select an option

Save Pajk/a9de3af59fbdc05fb440 to your computer and use it in GitHub Desktop.
learnyounode solutions
// 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