2015-04-28 23:07:55 -07:00
|
|
|
import {isPresent, isBlank, StringWrapper} from 'angular2/src/facade/lang';
|
|
|
|
import {Map, MapWrapper, List, ListWrapper} from 'angular2/src/facade/collection';
|
|
|
|
|
|
|
|
function paramParser(rawParams: string): Map<string, List<string>> {
|
2015-06-17 16:21:40 -07:00
|
|
|
var map: Map<string, List<string>> = new Map();
|
2015-04-28 23:07:55 -07:00
|
|
|
var params: List<string> = StringWrapper.split(rawParams, '&');
|
|
|
|
ListWrapper.forEach(params, (param: string) => {
|
|
|
|
var split: List<string> = StringWrapper.split(param, '=');
|
|
|
|
var key = ListWrapper.get(split, 0);
|
|
|
|
var val = ListWrapper.get(split, 1);
|
2015-06-17 16:21:40 -07:00
|
|
|
var list = map.get(key) || [];
|
2015-06-17 11:17:21 -07:00
|
|
|
list.push(val);
|
2015-06-17 16:21:40 -07:00
|
|
|
map.set(key, list);
|
2015-04-28 23:07:55 -07:00
|
|
|
});
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
|
|
|
|
export class URLSearchParams {
|
|
|
|
paramsMap: Map<string, List<string>>;
|
|
|
|
constructor(public rawParams: string) { this.paramsMap = paramParser(rawParams); }
|
|
|
|
|
|
|
|
has(param: string): boolean { return MapWrapper.contains(this.paramsMap, param); }
|
|
|
|
|
2015-06-17 16:21:40 -07:00
|
|
|
get(param: string): string { return ListWrapper.first(this.paramsMap.get(param)); }
|
2015-04-28 23:07:55 -07:00
|
|
|
|
2015-06-17 16:21:40 -07:00
|
|
|
getAll(param: string): List<string> { return this.paramsMap.get(param) || []; }
|
2015-04-28 23:07:55 -07:00
|
|
|
|
|
|
|
append(param: string, val: string): void {
|
2015-06-17 16:21:40 -07:00
|
|
|
var list = this.paramsMap.get(param) || [];
|
2015-06-17 11:17:21 -07:00
|
|
|
list.push(val);
|
2015-06-17 16:21:40 -07:00
|
|
|
this.paramsMap.set(param, list);
|
2015-04-28 23:07:55 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
toString(): string {
|
2015-06-17 11:17:21 -07:00
|
|
|
var paramsList = [];
|
2015-04-28 23:07:55 -07:00
|
|
|
MapWrapper.forEach(this.paramsMap, (values, k) => {
|
2015-06-17 11:17:21 -07:00
|
|
|
ListWrapper.forEach(values, v => { paramsList.push(k + '=' + v); });
|
2015-04-28 23:07:55 -07:00
|
|
|
});
|
|
|
|
return ListWrapper.join(paramsList, '&');
|
|
|
|
}
|
|
|
|
|
|
|
|
delete (param): void { MapWrapper.delete(this.paramsMap, param); }
|
|
|
|
}
|