Skip to content

Instantly share code, notes, and snippets.

@scastiel
Created April 3, 2017 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scastiel/566b8529043353d0c6ecbe883243f1c5 to your computer and use it in GitHub Desktop.
Save scastiel/566b8529043353d0c6ecbe883243f1c5 to your computer and use it in GitHub Desktop.
// Installer fs-promise avec : npm install fs-promise
const http = require('http')
const fs = require('fs-promise')
function factorial (n) {
return n === 0 ? 1 : n * factorial(n - 1)
}
const server = http.createServer((req, res) => {
if (req.url === '/') {
serveFile(res, 'index.html', 'text/html')
} else if (req.url === '/client.js') {
serveFile(res, 'client.js', 'application/javascript')
} else if (req.url.match(/^\/factorial\//)) {
const number = parseInt(req.url.replace(/^\/factorial\//, ''))
handleNumber(res, number)
} else {
res.statusCode = 404
res.end('Page introuvable')
}
})
function serveFile (res, path, contentType) {
fs.readFile(path, 'utf-8')
.then(content => {
res.setHeader('Content-type', contentType)
res.end(content)
})
.catch(err => {
console.error(err.stack)
res.statusCode = 500
res.end('Une erreur s\'est produite')
})
}
function handleNumber (res, number) {
if (isNaN(number)) {
res.statusCode = 400
res.end('Nombre invalide')
} else if (number < 0) {
res.statusCode = 400
res.end('Le nombre doit être positif')
} else {
res.end(String(factorial(number)))
}
}
server.listen(3000, () => {
console.log('Listening on http://localhost:3000/')
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment