Added OC.buidQueryString() utility function
Makes it possible to create query strings by passing a JavaScript hash map and automatically encodes the keys and values.
This commit is contained in:
parent
9fa788c452
commit
41b6d4b702
|
@ -364,6 +364,34 @@ var OC={
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a URL query from a JS map.
|
||||||
|
* @param params parameter map
|
||||||
|
* @return string containing a URL query (without question) mark
|
||||||
|
*/
|
||||||
|
buildQueryString: function(params) {
|
||||||
|
var s = '';
|
||||||
|
var first = true;
|
||||||
|
if (!params) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
for (var key in params) {
|
||||||
|
var value = params[key];
|
||||||
|
if (first) {
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
s += '&';
|
||||||
|
}
|
||||||
|
s += encodeURIComponent(key);
|
||||||
|
if (value !== null && typeof(value) !== 'undefined') {
|
||||||
|
s += '=' + encodeURIComponent(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens a popup with the setting for an app.
|
* Opens a popup with the setting for an app.
|
||||||
* @param appid String. The ID of the app e.g. 'calendar', 'contacts' or 'files'.
|
* @param appid String. The ID of the app e.g. 'calendar', 'contacts' or 'files'.
|
||||||
|
|
|
@ -67,4 +67,41 @@ describe('Core base tests', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('Query string building', function() {
|
||||||
|
it('Returns empty string when empty params', function() {
|
||||||
|
expect(OC.buildQueryString()).toEqual('');
|
||||||
|
expect(OC.buildQueryString({})).toEqual('');
|
||||||
|
});
|
||||||
|
it('Encodes regular query strings', function() {
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
a: 'abc',
|
||||||
|
b: 'def'
|
||||||
|
})).toEqual('a=abc&b=def');
|
||||||
|
});
|
||||||
|
it('Encodes special characters', function() {
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
unicode: '汉字',
|
||||||
|
})).toEqual('unicode=%E6%B1%89%E5%AD%97');
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
b: 'spaace value',
|
||||||
|
'space key': 'normalvalue',
|
||||||
|
'slash/this': 'amp&ersand'
|
||||||
|
})).toEqual('b=spaace%20value&space%20key=normalvalue&slash%2Fthis=amp%26ersand');
|
||||||
|
});
|
||||||
|
it('Encodes data types and empty values', function() {
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
'keywithemptystring': '',
|
||||||
|
'keywithnull': null,
|
||||||
|
'keywithundefined': null,
|
||||||
|
something: 'else'
|
||||||
|
})).toEqual('keywithemptystring=&keywithnull&keywithundefined&something=else');
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
'booleanfalse': false,
|
||||||
|
'booleantrue': true
|
||||||
|
})).toEqual('booleanfalse=false&booleantrue=true');
|
||||||
|
expect(OC.buildQueryString({
|
||||||
|
'number': 123,
|
||||||
|
})).toEqual('number=123');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue