This commit is contained in:
Kegan Myers 2014-02-26 15:56:26 -06:00
parent c63007f3fd
commit 3541b55dcd
4 changed files with 26 additions and 28 deletions

View File

@ -16,6 +16,9 @@ Todo
Changelog Changelog
--------- ---------
####0.2.1
- Renamed some functions
- Pulled decoding of URL encoded objects into own function
####0.2.0 ####0.2.0
- Interface to decode QueryStrings - Interface to decode QueryStrings
- Interface to create HttpUrl from string - Interface to create HttpUrl from string

View File

@ -1,6 +1,6 @@
{ {
"name": "Typertext", "name": "Typertext",
"version": "0.2.0", "version": "0.2.1",
"homepage": "https://github.com/terribleplan/Typertext", "homepage": "https://github.com/terribleplan/Typertext",
"authors": [ "authors": [
"Kegan Myers <kegan@keganmyers.com>" "Kegan Myers <kegan@keganmyers.com>"

View File

@ -19,16 +19,31 @@ module Typertext.Http {
} }
public static DecodeQueryString(queryString:string):HttpQueryString { public static DecodeQueryString(queryString:string):HttpQueryString {
var returnValue:HttpQueryString = {};
if (queryString.length == 0 || queryString == "?") { if (queryString.length == 0 || queryString == "?") {
return returnValue; return {};
} }
if (queryString.indexOf("?") == 0) { return HttpUrl.UrlDecodeString(queryString);
queryString = queryString.substring(1); }
public static EncodeQueryString(query:HttpQueryString) {
var rs = "?" + HttpUrl.UrlEncodeObject(query);
return ((rs.length == 1) ? "" : rs);
}
public static UrlEncodeObject(data:HttpQueryString):string {
var rs:string = "";
var temp:string;
for (temp in data) {
rs += +encodeURIComponent(temp) + "=" + encodeURIComponent(data[temp]) + "&";
} }
var params:string[] = HttpUrl.splitString(queryString, "&"); return rs.slice(0, -1);
}
public static UrlDecodeString(queryString:string):HttpQueryString {
var returnValue:HttpQueryString = {}, params:string[] = HttpUrl.splitString(queryString, "&");
for (var i:number = 0; i < params.length; i++) { for (var i:number = 0; i < params.length; i++) {
var param = HttpUrl.splitString(params[i], "=", 2); var param = HttpUrl.splitString(params[i], "=", 2);
if (param.length == 1) { if (param.length == 1) {
@ -42,24 +57,6 @@ module Typertext.Http {
return returnValue; return returnValue;
} }
public static EncodeQueryString(query:HttpQueryString) {
var rs = "?" + HttpUrl.URLEncodeObject(query);
return ((rs.length == 1) ? "" : rs);
}
public static URLEncodeObject(data:{
[index:string]:string
}):string {
var rs:string = "";
var temp:string;
for (temp in data) {
rs += +encodeURIComponent(temp) + "=" + encodeURIComponent(data[temp]) + "&";
}
return rs.slice(0, -1);
}
private static splitString(input:string, separator:string, limit:number = 0):string[] { private static splitString(input:string, separator:string, limit:number = 0):string[] {
limit++; limit++;
var chunks:string[] = input.split(separator); var chunks:string[] = input.split(separator);
@ -71,9 +68,7 @@ module Typertext.Http {
return chunks; return chunks;
} }
constructor(domain:string, protocol:HttpProtocol = HttpProtocol.http, path:string = "/", queryString:{ constructor(domain:string, protocol:HttpProtocol = HttpProtocol.http, path:string = "/", queryString:HttpQueryString = {}, port:number = 0) {
[index:string]:string
} = {}, port:number = 0) {
if (port < 1 || port > 65535) { if (port < 1 || port > 65535) {
port = HttpUrl.DefaultPort(protocol); port = HttpUrl.DefaultPort(protocol);
} }

View File

@ -5,7 +5,7 @@
"type" : "git", "type" : "git",
"url" : "https://github.com/terribleplan/Typertext.git" "url" : "https://github.com/terribleplan/Typertext.git"
}, },
"version": "0.2.0", "version": "0.2.1",
"devDependencies": { "devDependencies": {
"grunt": "~0.4.2", "grunt": "~0.4.2",
"grunt-typescript": "~0.2.7" "grunt-typescript": "~0.2.7"