@@ -55,6 +55,37 @@ function getStatus()
5555 return retVal ;
5656}
5757
58+ function parseParams ( query )
59+ {
60+ var params = { } ;
61+ if ( query != null && query . length > 0 )
62+ {
63+ var pairs = query . split ( "&" ) ;
64+ for ( var loop = 0 ; loop < pairs . length ; loop ++ )
65+ {
66+ var kv = pairs [ loop ] . split ( '=' ) ;
67+ if ( kv && kv . length == 2 )
68+ {
69+ if ( kv [ 0 ] in params )
70+ {
71+ params [ kv [ 0 ] ] . push ( querystring . unescape ( kv [ 1 ] . replace ( / \+ / g, " " ) ) ) ;
72+ }
73+ else
74+ {
75+ params [ kv [ 0 ] ] = [ querystring . unescape ( kv [ 1 ] . replace ( / \+ / g, " " ) ) ] ;
76+ }
77+ }
78+ else
79+ {
80+ //LATER: do something?
81+ }
82+ }
83+ }
84+
85+ return params ;
86+ }
87+
88+
5889function redirect ( response , location )
5990{
6091 response . writeHead ( 302 , { "Content-Type" : "text/plain" , "Location" : location } ) ;
@@ -82,10 +113,28 @@ function serveFile(response, contentType, fileName)
82113 } ) ;
83114}
84115
85- function serveStatus ( response )
116+ function serveStatus ( query , response )
86117{
87- response . writeHead ( 200 , { "Content-Type" : "text/plain" } ) ;
88- response . write ( JSON . stringify ( getStatus ( ) ) ) ;
118+ response . writeHead ( 200 , {
119+ "Content-Type" : "text/plain" ,
120+ 'Access-Control-Allow-Origin' : '*' ,
121+ 'Access-Control-Allow-Methods' : 'POST, GET' ,
122+ 'Access-Control-Max-Age' : '604800' ,
123+ } ) ;
124+
125+ var params = parseParams ( query ) ;
126+
127+ if ( 'callback' in params )
128+ {
129+ response . write ( params [ 'callback' ] [ 0 ] ) ;
130+ response . write ( "(" ) ;
131+ response . write ( JSON . stringify ( getStatus ( ) ) ) ;
132+ response . write ( ")" ) ;
133+ }
134+ else
135+ {
136+ response . write ( JSON . stringify ( getStatus ( ) ) ) ;
137+ }
89138 response . end ( ) ;
90139}
91140
@@ -128,27 +177,7 @@ function serveTest(query, response)
128177
129178 try
130179 {
131- var params = { } ;
132- var pairs = query . split ( "&" ) ;
133- for ( var loop = 0 ; loop < pairs . length ; loop ++ )
134- {
135- var kv = pairs [ loop ] . split ( '=' ) ;
136- if ( kv && kv . length == 2 )
137- {
138- if ( kv [ 0 ] in params )
139- {
140- params [ kv [ 0 ] ] . push ( querystring . unescape ( kv [ 1 ] . replace ( / \+ / g, " " ) ) ) ;
141- }
142- else
143- {
144- params [ kv [ 0 ] ] = [ querystring . unescape ( kv [ 1 ] . replace ( / \+ / g, " " ) ) ] ;
145- }
146- }
147- else
148- {
149- //LATER: do something?
150- }
151- }
180+ var params = parseParams ( query ) ;
152181
153182 retVal [ "params" ] = JSON . stringify ( params ) ;
154183
@@ -401,7 +430,7 @@ http.createServer(function (request, response)
401430 }
402431 else if ( parsedUrl . pathname == '/status.json' )
403432 {
404- serveStatus ( response ) ;
433+ serveStatus ( parsedUrl . query , response ) ;
405434 }
406435 else if ( parsedUrl . pathname == '/robots.txt' )
407436 {
0 commit comments