@@ -2,16 +2,38 @@ var http = require('http')
2
2
var fs = require ( 'fs' )
3
3
var ecstatic = require ( 'ecstatic' )
4
4
var st = ecstatic ( __dirname + '/public' )
5
+ var router = require ( 'routes' ) ( )
5
6
var count = 0
6
7
8
+ router . addRoute ( 'GET /' , function ( req , res , m ) {
9
+ res . setHeader ( 'content-type' , 'text/html' )
10
+ res . end ( `<h1>HOWDY</h1>
11
+ <div>you are the ${ count ++ } th visitor</div>
12
+ <div>sign my guestbook</div>
13
+ <form action="/guestbook" method="POST">
14
+ <input type="text" placeholder="your name"
15
+ name="name">
16
+ <textarea name="msg"></textarea>
17
+ </form>
18
+ ` )
19
+ } )
20
+ router . addRoute ( 'POST /guestbook' , function ( req , res , m ) {
21
+ var w = fs . createWriteStream ( 'guestbook.txt' , { flags : 'a+' } )
22
+ req . pipe ( w , { end : false } )
23
+ req . on ( 'end' , function ( ) { w . end ( '\n' ) } )
24
+ w . on ( 'error' , function ( err ) {
25
+ res . statusCode = 500
26
+ res . end ( err + '\n' )
27
+ } )
28
+ w . on ( 'finish' , function ( ) {
29
+ res . end ( 'thank you for signing my guestbook\n' )
30
+ } )
31
+ } )
32
+
7
33
var server = http . createServer ( function ( req , res ) {
8
34
console . log ( req . method , req . url )
9
- if ( req . method === 'GET' && req . url === '/' ) {
10
- res . setHeader ( 'content-type' , 'text/html' )
11
- res . end ( `<h1>HOWDY</h1>
12
- <div>you are the ${ count ++ } th visitor</div>
13
- <div>sign my guestbook</div>
14
- ` )
15
- } else st ( req , res )
35
+ var m = router . match ( req . method + ' ' + req . url )
36
+ if ( m ) m . fn ( req , res , m )
37
+ else st ( req , res )
16
38
} )
17
39
server . listen ( 3000 )
0 commit comments