aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src/services/WebdavClient.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/src/services/WebdavClient.ts')
-rw-r--r--apps/files/src/services/WebdavClient.ts63
1 files changed, 13 insertions, 50 deletions
diff --git a/apps/files/src/services/WebdavClient.ts b/apps/files/src/services/WebdavClient.ts
index ae2ab27b9db..2b92deba9b4 100644
--- a/apps/files/src/services/WebdavClient.ts
+++ b/apps/files/src/services/WebdavClient.ts
@@ -1,56 +1,19 @@
/**
- * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
- *
- * @author John Molakvoæ <skjnldsv@protonmail.com>
- *
- * @license AGPL-3.0-or-later
- *
- * 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/>.
- *
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { RequestOptions, Response } from 'webdav'
+import type { FileStat, ResponseDataDetailed } from 'webdav'
+import type { Node } from '@nextcloud/files'
-import { createClient, getPatcher } from 'webdav'
-import { generateRemoteUrl } from '@nextcloud/router'
-import { getCurrentUser, getRequestToken } from '@nextcloud/auth'
-import { request } from 'webdav/dist/node/request.js'
+import { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav'
-export const rootPath = `/files/${getCurrentUser()?.uid}`
-export const defaultRootUrl = generateRemoteUrl('dav' + rootPath)
+export const client = getClient()
-export const getClient = (rootUrl = defaultRootUrl) => {
- const client = createClient(rootUrl, {
- headers: {
- requesttoken: getRequestToken() || '',
- },
- })
-
- /**
- * Allow to override the METHOD to support dav REPORT
- *
- * @see https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/request.ts
- */
- const patcher = getPatcher()
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- // https://github.com/perry-mitchell/hot-patcher/issues/6
- patcher.patch('request', (options: RequestOptions): Promise<Response> => {
- if (options.headers?.method) {
- options.method = options.headers.method
- delete options.headers.method
- }
- return request(options)
- })
- return client
+export const fetchNode = async (path: string): Promise<Node> => {
+ const propfindPayload = getDefaultPropfind()
+ const result = await client.stat(`${getRootPath()}${path}`, {
+ details: true,
+ data: propfindPayload,
+ }) as ResponseDataDetailed<FileStat>
+ return resultToNode(result.data)
}