[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [flashproxy/js] Add parse_query_string.
commit cc8507d12cfd162e29114e999ba94d84abcbd4c6
Author: David Fifield <david@xxxxxxxxxxxxxxx>
Date: Tue Mar 13 09:53:01 2012 -0700
Add parse_query_string.
It's strange that this is not built in. The Note at
http://dev.w3.org/html5/spec/Overview.html#url-encoded-form-data is
worth reading.
---
flashproxy.js | 37 ++++++++++++++++++++++++++++++++++++-
1 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/flashproxy.js b/flashproxy.js
index e4c7319..b68da1f 100644
--- a/flashproxy.js
+++ b/flashproxy.js
@@ -3,9 +3,44 @@ var DEFAULT_FACILITATOR_ADDR = {
port: 9002
};
+/* Parse a URL query string or application/x-www-form-urlencoded body. The
+ return type is an object mapping string keys to string values. By design,
+ this function doesn't support multiple values for the same named parameter,
+ for example "a=1&a=2&a=3"; the first definition always wins. Returns null on
+ error.
+
+ Always decodes from UTF-8, not any other encoding.
+
+ http://dev.w3.org/html5/spec/Overview.html#url-encoded-form-data */
function parse_query_string(qs)
{
- return {};
+ var strings;
+ var result;
+
+ result = {};
+ if (qs)
+ strings = qs.split("&");
+ else
+ strings = {}
+ for (var i = 0; i < strings.length; i++) {
+ var string = strings[i];
+ var j, name, value;
+
+ j = string.indexOf("=");
+ if (j == -1) {
+ name = string;
+ value = "";
+ } else {
+ name = string.substr(0, j);
+ value = string.substr(j + 1);
+ }
+ name = decodeURIComponent(name.replace(/\+/, " "));
+ value = decodeURIComponent(value.replace(/\+/, " "));
+ if (!(name in result))
+ result[name] = value;
+ }
+
+ return result;
}
function format_addr(addr)
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits