Skip to content

Commit a1c2888

Browse files
committed
jsonp support for status
1 parent e962b55 commit a1c2888

File tree

1 file changed

+54
-25
lines changed

1 file changed

+54
-25
lines changed

server.js

Lines changed: 54 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
5889
function 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

Comments
 (0)