@@ -2,7 +2,8 @@ var sys = require('sys'),
22 puts = sys . puts ,
33 binding = require ( './binding' ) ,
44 path_additions = require ( './path_additions' ) ,
5- http = require ( 'http' ) ;
5+ http = require ( 'http' ) ,
6+ url = require ( 'url' ) ;
67
78var sys = binding . import ( 'sys' ) ;
89var os = binding . import ( 'os' ) ;
@@ -21,16 +22,38 @@ var wsgi_handler = django_wsgi.WSGIHandler.call()
2122wsgi_handler . load_middleware ( ) ;
2223
2324http . createServer ( function ( req , res ) {
24- var wsgi_request = django_wsgi . WSGIRequest ( {
25- 'path' :req . url ,
26- 'REQUEST_PATH' :req . url ,
27- 'REQUEST_METHOD' :'GET' ,
28- 'HTTP_HOST' :'localhost:8000' ,
29- } ) ;
30- var response = wsgi_handler . get_response ( wsgi_request ) ;
25+ var path_and_query = url . parse ( req . url ) ;
26+ if ( ! path_and_query . pathname . match ( / ^ \/ m e d i a / ) ) {
27+ var wsgi_request = django_wsgi . WSGIRequest ( {
28+ 'PATH_INFO' :path_and_query . pathname ,
29+ 'QUERY_STRING' :path_and_query . query ,
30+ 'HTTP_VERSION' :req . httpVersion ,
31+ 'HTTP_ACCEPT' :req . headers [ 'http-accept' ] ,
32+ 'HTTP_ACCEPT_CHARSET' :req . headers [ 'http-accept-charset' ] ,
33+ 'HTTP_ACCEPT_ENCODING' :req . headers [ 'http-accept-encoding' ] ,
34+ 'HTTP_ACCEPT_LANGUAGE' :req . headers [ 'http-accept-language' ] ,
35+ 'HTTP_CACHE_CONTROL' :req . headers [ 'http-cache-control' ] ,
36+ 'REQUEST_METHOD' :req . method ,
37+ 'HTTP_HOST' :req . headers [ 'http-host' ]
38+ } ) ;
39+ var response = wsgi_handler . get_response ( wsgi_request ) ,
40+ headers = response . _headers . valueOf ( ) ,
41+ content = response . content . toString ( ) ,
42+ headers_out = { } ,
43+ status_code = response . status_code . valueOf ( ) ;
3144
32- res . writeHead ( 200 , { 'Content-Type' :'text/html' } ) ;
33- var content = response . content . toString ( ) ;
34- res . write ( content ) ;
35- res . close ( ) ;
45+ for ( var i in headers ) {
46+ var as_array = headers [ i ] . valueOf ( ) ;
47+ headers_out [ as_array [ 0 ] ] = as_array [ 1 ] . toString ( ) ;
48+ } ;
49+ puts ( req . method + ' - ' + response . status_code . valueOf ( ) + ' - ' + path_and_query . pathname + " - " + JSON . stringify ( headers_out ) ) ;
50+ res . writeHead ( status_code , headers_out ) ;
51+ res . write ( content ) ;
52+ res . close ( ) ;
53+ } else {
54+ puts ( req . method + ' - 404 - ' + path_and_query . pathname + " - {}" ) ;
55+ res . writeHead ( 404 , { "Content-Type" :"text/html" } ) ;
56+ res . write ( "<h1>sorry, no images.</h1>" ) ;
57+ res . close ( ) ;
58+ }
3659} ) . listen ( 8000 ) ;
0 commit comments