summaryrefslogtreecommitdiffstats
path: root/core/src/OC
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2019-05-14 18:18:31 +0200
committerChristoph Wurst <christoph@winzerhof-wurst.at>2019-05-14 18:18:31 +0200
commit291c4a121e9aadcbfaaf380960f15561e853ecad (patch)
treed8244b92d752c7cb5841a24fa4882c5ae1843021 /core/src/OC
parentf08aed74d78cc2ec50dc74154c2862d054791882 (diff)
downloadnextcloud-server-291c4a121e9aadcbfaaf380960f15561e853ecad.tar.gz
nextcloud-server-291c4a121e9aadcbfaaf380960f15561e853ecad.zip
Move query string helpers to the bundle
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'core/src/OC')
-rw-r--r--core/src/OC/index.js10
-rw-r--r--core/src/OC/query-string.js89
2 files changed, 99 insertions, 0 deletions
diff --git a/core/src/OC/index.js b/core/src/OC/index.js
index ea217edaf88..4a2f2c3d803 100644
--- a/core/src/OC/index.js
+++ b/core/src/OC/index.js
@@ -31,6 +31,10 @@ import {
isSamePath,
joinPaths,
} from './path'
+import {
+ build as buildQueryString,
+ parse as parseQueryString,
+} from './query-string'
import Config from './config'
import {
coreApps,
@@ -198,6 +202,12 @@ export default {
*/
addTranslations: L10N.load,
+ /**
+ * Query string helpers
+ */
+ buildQueryString,
+ parseQueryString,
+
msg,
Notification,
PasswordConfirmation,
diff --git a/core/src/OC/query-string.js b/core/src/OC/query-string.js
new file mode 100644
index 00000000000..973412de579
--- /dev/null
+++ b/core/src/OC/query-string.js
@@ -0,0 +1,89 @@
+/*
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Parses a URL query string into a JS map
+ * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz
+ * @return {Object.<string, string>} map containing key/values matching the URL parameters
+ */
+export const parse = queryString => {
+ let parts,
+ pos,
+ components,
+ result = {},
+ key,
+ value
+ if (!queryString) {
+ return null
+ }
+ pos = queryString.indexOf('?')
+ if (pos >= 0) {
+ queryString = queryString.substr(pos + 1)
+ }
+ parts = queryString.replace(/\+/g, '%20').split('&')
+ for (let i = 0; i < parts.length; i++) {
+ // split on first equal sign
+ var part = parts[i]
+ pos = part.indexOf('=')
+ if (pos >= 0) {
+ components = [
+ part.substr(0, pos),
+ part.substr(pos + 1)
+ ]
+ } else {
+ // key only
+ components = [part]
+ }
+ if (!components.length) {
+ continue
+ }
+ key = decodeURIComponent(components[0])
+ if (!key) {
+ continue
+ }
+ // if equal sign was there, return string
+ if (components.length > 1) {
+ result[key] = decodeURIComponent(components[1])
+ } else {
+ // no equal sign => null value
+ result[key] = null
+ }
+ }
+ return result
+}
+
+/**
+ * Builds a URL query from a JS map.
+ * @param {Object.<string, string>} params map containing key/values matching the URL parameters
+ * @return {string} String containing a URL query (without question) mark
+ */
+export const build = params => {
+ if (!params) {
+ return ''
+ }
+ return $.map(params, function (value, key) {
+ var s = encodeURIComponent(key)
+ if (value !== null && typeof (value) !== 'undefined') {
+ s += '=' + encodeURIComponent(value)
+ }
+ return s
+ }).join('&')
+}