diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2016-10-25 10:31:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-25 10:31:03 +0200 |
commit | 79706e0ddc6ab970d5709e89b8d0caec4d34662b (patch) | |
tree | 168f9bc806e7eed287bce63e7f6d277eb5adb956 /core/js | |
parent | 5926da3dd6535e0eea7fe7871d2347f8b33bb337 (diff) | |
parent | c8a13f644ebbc5840d0e632cf86e5ae46856f7f0 (diff) | |
download | nextcloud-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.js | 41 | ||||
-rw-r--r-- | core/js/js.js | 22 | ||||
-rw-r--r-- | core/js/tests/specs/coreSpec.js | 65 |
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'; |