dabble
Version:
## Commands
53 lines (49 loc) • 1.29 kB
JavaScript
var express = require("express")
var bodyParser = require("body-parser")
var fs = require("fs")
var app = express()
var hbs = require("hbs")
app.set('view engine', 'hbs')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true, limit: '1mb' }))
app.use(express.static('public'))
app.get("/", function(req, res){
res.render("index")
})
function version( file ){
var pathTo = __dirname + "/public/"
if(file.match(/-v[0-9]+\.html$/)){
var num = parseInt(file.match(/-v([0-9]+)\.html$/)[1])
var name = file.replace(/[0-9]+\.html$/, ++num + ".html")
} else {
var name = file.replace(".html","-v1.html")
}
if(fs.existsSync(pathTo + name)){
return version( name )
}
return name
}
app.post("/", function(req, res){
var pathTo = __dirname + "/public/"
var file = req.body.name
if(file.match(/\.html$/)){
if(fs.existsSync(pathTo + file)){
file = version(file)
}
fs.writeFile(pathTo + file, req.body.content, function(err){
res.json({
status: "ok.",
url: "http://" + req.headers.host + "/" + file,
filename: file
})
})
} else {
res.json({
status: "error.",
message: "Only html dabbles are allowed."
})
}
})
app.listen(3041, function(){
console.log("listenin' on 3041")
})