{ full: "/status?name=ryan",
path: "/status",
queryString: "name=ryan",
+ params: { "name": "ryan" },
fragment: ""
}
----------------------------------------
full: "",
queryString: "",
fragment: "",
- path: ""
+ path: "",
+ params: {}
};
this.method = null;
}
node.inherits(IncomingMessage, node.EventEmitter);
+IncomingMessage.prototype._parseQueryString = function () {
+ var parts = this.uri.queryString.split('&');
+ for (var j = 0; j < parts.length; j++) {
+ var i = parts[j].indexOf('=');
+ if (i < 0) continue;
+ try {
+ var key = decode(parts[j].slice(0,i))
+ var value = decode(parts[j].slice(i+1));
+ this.uri.params[key] = value;
+ } catch (e) {
+ continue;
+ }
+ }
+};
+
IncomingMessage.prototype.setBodyEncoding = function (enc) {
// TODO: Find a cleaner way of doing this.
this.connection.setEncoding(enc);
if (info.method) {
// server only
incoming.method = info.method;
+
+ if (incoming.uri.queryString.length > 0) {
+ incoming._parseQueryString();
+ }
} else {
// client only
incoming.statusCode = info.statusCode;
if (req.id == 0) {
assertEquals("GET", req.method);
assertEquals("/hello", req.uri.path);
+ assertEquals("world", req.uri.params["hello"]);
+ assertEquals("b==ar", req.uri.params["foo"]);
}
if (req.id == 1) {
c.setEncoding("utf8");
c.addListener("connect", function () {
- c.send( "GET /hello HTTP/1.1\r\n\r\n" );
+ c.send( "GET /hello?hello=world&foo=b==ar HTTP/1.1\r\n\r\n" );
requests_sent += 1;
});