Advertisement
Guest User

[3/22/2012] Challenge #29 [intermediate]

a guest
Mar 22nd, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var querystring = require("querystring"),
  2.     http = require("http"),
  3.     path = require("path"),
  4.     url = require("url"),
  5.     fs = require("fs");
  6.  
  7. http.createServer(function(req,res){
  8.     var URL = url.parse(req.url);
  9.     if(URL.pathname === "/favicon.ico") return pipe(__dirname+"/favicon.ico",res);
  10.     if(URL.pathname === "/submit.html"){
  11.         if(req.method == "POST"){
  12.             var body = '';
  13.             req.on("data",function(data){
  14.                 body += data;
  15.                 if(body.length > 1e6) req.connection.destroy();
  16.             });
  17.             req.on("end",function(){
  18.                 saveFormData(querystring.parse(body),res);
  19.             });
  20.             return;
  21.         }else{
  22.             return res.end("No data sent, please try again.");
  23.         }
  24.     }
  25.     return form(res);
  26. }).listen(8000);
  27.  
  28. function saveFormData(data,res){
  29.     if(data.text){
  30.         var s = fs.createWriteStream(__dirname+"/submitted.txt",{"flags":"a"});
  31.         s.write(data.text+"\n");
  32.         pipe(__dirname+"/submitted.txt",res,{"content-type":"text/plain"});
  33.     }else{
  34.         return res.end("No data sent, please try again.");
  35.     }
  36. }
  37. function form(res){
  38.     res.writeHead(200,{"content-type":"text/html"});
  39.     res.end('<form action="submit.html" method="POST"><textarea name="text"></textarea><input type="submit" /></form>')
  40. }
  41. function pipe(file,res,headers){
  42.     path.exists(file,function(exists){
  43.         if(exists){
  44.             var s = fs.createReadStream(file);
  45.             s.on('error',function(e){
  46.                 res.end();
  47.             });
  48.             res.writeHead(200,(headers ? headers:{}));
  49.             s.pipe(res);
  50.         }else{
  51.             res.writeHead(404);
  52.             res.end("The requested file does not exist.");
  53.         }
  54.     });
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement