summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2016-10-25 10:31:03 +0200
committerGitHub <noreply@github.com>2016-10-25 10:31:03 +0200
commit79706e0ddc6ab970d5709e89b8d0caec4d34662b (patch)
tree168f9bc806e7eed287bce63e7f6d277eb5adb956 /core/js
parent5926da3dd6535e0eea7fe7871d2347f8b33bb337 (diff)
parentc8a13f644ebbc5840d0e632cf86e5ae46856f7f0 (diff)
downloadnextcloud-server-79706e0ddc6ab970d5709e89b8d0caec4d34662b.tar.gz
nextcloud-server-79706e0ddc6ab970d5709e89b8d0caec4d34662b.zip
Merge pull request #1283 from nextcloud/us_files-ui-webdav-upload
Use Webdav PUT for uploads
Diffstat (limited to 'core/js')
-rw-r--r--core/js/files/client.js41
-rw-r--r--core/js/js.js22
-rw-r--r--core/js/tests/specs/coreSpec.js65
3 files changed, 127 insertions, 1 deletions
diff --git a/core/js/files/client.js b/core/js/files/client.js
index ee3efbd5517..fdc51c4a197 100644
--- a/core/js/files/client.js
+++ b/core/js/files/client.js
@@ -729,8 +729,47 @@
*/
addFileInfoParser: function(parserFunction) {
this._fileInfoParsers.push(parserFunction);
- }
+ },
+ /**
+ * Returns the dav.Client instance used internally
+ *
+ * @since 9.2
+ * @return {dav.Client}
+ */
+ getClient: function() {
+ return this._client;
+ },
+
+ /**
+ * Returns the user name
+ *
+ * @since 9.2
+ * @return {String} userName
+ */
+ getUserName: function() {
+ return this._client.userName;
+ },
+
+ /**
+ * Returns the password
+ *
+ * @since 9.2
+ * @return {String} password
+ */
+ getPassword: function() {
+ return this._client.password;
+ },
+
+ /**
+ * Returns the base URL
+ *
+ * @since 9.2
+ * @return {String} base URL
+ */
+ getBaseUrl: function() {
+ return this._client.baseUrl;
+ }
};
/**
diff --git a/core/js/js.js b/core/js/js.js
index 16da273c8e1..0db9967094b 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -423,6 +423,28 @@ var OC={
},
/**
+ * Returns whether the given paths are the same, without
+ * leading, trailing or doubled slashes and also removing
+ * the dot sections.
+ *
+ * @param {String} path1 first path
+ * @param {String} path2 second path
+ * @return {bool} true if the paths are the same
+ *
+ * @since 9.0
+ */
+ isSamePath: function(path1, path2) {
+ var filterDot = function(p) {
+ return p !== '.';
+ };
+ var pathSections1 = _.filter((path1 || '').split('/'), filterDot);
+ var pathSections2 = _.filter((path2 || '').split('/'), filterDot);
+ path1 = OC.joinPaths.apply(OC, pathSections1);
+ path2 = OC.joinPaths.apply(OC, pathSections2);
+ return path1 === path2;
+ },
+
+ /**
* Join path sections
*
* @param {...String} path sections
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js
index 01a0e6acb6f..5d42f0881d4 100644
--- a/core/js/tests/specs/coreSpec.js
+++ b/core/js/tests/specs/coreSpec.js
@@ -188,6 +188,71 @@ describe('Core base tests', function() {
expect(OC.joinPaths('/', '//', '/')).toEqual('/');
});
});
+ describe('isSamePath', function() {
+ it('recognizes empty paths are equal', function() {
+ expect(OC.isSamePath('', '')).toEqual(true);
+ expect(OC.isSamePath('/', '')).toEqual(true);
+ expect(OC.isSamePath('//', '')).toEqual(true);
+ expect(OC.isSamePath('/', '/')).toEqual(true);
+ expect(OC.isSamePath('/', '//')).toEqual(true);
+ });
+ it('recognizes path with single sections as equal regardless of extra slashes', function() {
+ expect(OC.isSamePath('abc', 'abc')).toEqual(true);
+ expect(OC.isSamePath('/abc', 'abc')).toEqual(true);
+ expect(OC.isSamePath('//abc', 'abc')).toEqual(true);
+ expect(OC.isSamePath('abc', '/abc')).toEqual(true);
+ expect(OC.isSamePath('abc/', 'abc')).toEqual(true);
+ expect(OC.isSamePath('abc/', 'abc/')).toEqual(true);
+ expect(OC.isSamePath('/abc/', 'abc/')).toEqual(true);
+ expect(OC.isSamePath('/abc/', '/abc/')).toEqual(true);
+ expect(OC.isSamePath('//abc/', '/abc/')).toEqual(true);
+ expect(OC.isSamePath('//abc//', '/abc/')).toEqual(true);
+
+ expect(OC.isSamePath('abc', 'def')).toEqual(false);
+ expect(OC.isSamePath('/abc', 'def')).toEqual(false);
+ expect(OC.isSamePath('//abc', 'def')).toEqual(false);
+ expect(OC.isSamePath('abc', '/def')).toEqual(false);
+ expect(OC.isSamePath('abc/', 'def')).toEqual(false);
+ expect(OC.isSamePath('abc/', 'def/')).toEqual(false);
+ expect(OC.isSamePath('/abc/', 'def/')).toEqual(false);
+ expect(OC.isSamePath('/abc/', '/def/')).toEqual(false);
+ expect(OC.isSamePath('//abc/', '/def/')).toEqual(false);
+ expect(OC.isSamePath('//abc//', '/def/')).toEqual(false);
+ });
+ it('recognizes path with multiple sections as equal regardless of extra slashes', function() {
+ expect(OC.isSamePath('abc/def', 'abc/def')).toEqual(true);
+ expect(OC.isSamePath('/abc/def', 'abc/def')).toEqual(true);
+ expect(OC.isSamePath('abc/def', '/abc/def')).toEqual(true);
+ expect(OC.isSamePath('abc/def/', '/abc/def/')).toEqual(true);
+ expect(OC.isSamePath('/abc/def/', '/abc/def/')).toEqual(true);
+ expect(OC.isSamePath('/abc/def/', 'abc/def/')).toEqual(true);
+ expect(OC.isSamePath('//abc/def/', 'abc/def/')).toEqual(true);
+ expect(OC.isSamePath('//abc/def//', 'abc/def/')).toEqual(true);
+
+ expect(OC.isSamePath('abc/def', 'abc/ghi')).toEqual(false);
+ expect(OC.isSamePath('/abc/def', 'abc/ghi')).toEqual(false);
+ expect(OC.isSamePath('abc/def', '/abc/ghi')).toEqual(false);
+ expect(OC.isSamePath('abc/def/', '/abc/ghi/')).toEqual(false);
+ expect(OC.isSamePath('/abc/def/', '/abc/ghi/')).toEqual(false);
+ expect(OC.isSamePath('/abc/def/', 'abc/ghi/')).toEqual(false);
+ expect(OC.isSamePath('//abc/def/', 'abc/ghi/')).toEqual(false);
+ expect(OC.isSamePath('//abc/def//', 'abc/ghi/')).toEqual(false);
+ });
+ it('recognizes path entries with dot', function() {
+ expect(OC.isSamePath('.', '')).toEqual(true);
+ expect(OC.isSamePath('.', '.')).toEqual(true);
+ expect(OC.isSamePath('.', '/')).toEqual(true);
+ expect(OC.isSamePath('/.', '/')).toEqual(true);
+ expect(OC.isSamePath('/./', '/')).toEqual(true);
+ expect(OC.isSamePath('/./', '/.')).toEqual(true);
+ expect(OC.isSamePath('/./', '/./')).toEqual(true);
+ expect(OC.isSamePath('/./', '/./')).toEqual(true);
+
+ expect(OC.isSamePath('a/./b', 'a/b')).toEqual(true);
+ expect(OC.isSamePath('a/b/.', 'a/b')).toEqual(true);
+ expect(OC.isSamePath('./a/b', 'a/b')).toEqual(true);
+ });
+ });
describe('filePath', function() {
beforeEach(function() {
OC.webroot = 'http://localhost';