mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-11 08:19:01 +08:00
refactor(BackupManager, WebDav): streamline WebDAV client initialization and enhance directory listing functionality (#6784)
Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
This commit is contained in:
parent
11b14c9bd5
commit
8998bbff27
@ -7,7 +7,7 @@ import Logger from 'electron-log'
|
|||||||
import * as fs from 'fs-extra'
|
import * as fs from 'fs-extra'
|
||||||
import StreamZip from 'node-stream-zip'
|
import StreamZip from 'node-stream-zip'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import { createClient, CreateDirectoryOptions, FileStat } from 'webdav'
|
import { CreateDirectoryOptions, FileStat } from 'webdav'
|
||||||
|
|
||||||
import WebDav from './WebDav'
|
import WebDav from './WebDav'
|
||||||
import { windowService } from './WindowService'
|
import { windowService } from './WindowService'
|
||||||
@ -340,12 +340,8 @@ class BackupManager {
|
|||||||
|
|
||||||
listWebdavFiles = async (_: Electron.IpcMainInvokeEvent, config: WebDavConfig) => {
|
listWebdavFiles = async (_: Electron.IpcMainInvokeEvent, config: WebDavConfig) => {
|
||||||
try {
|
try {
|
||||||
const client = createClient(config.webdavHost, {
|
const client = new WebDav(config)
|
||||||
username: config.webdavUser,
|
const response = await client.getDirectoryContents()
|
||||||
password: config.webdavPass
|
|
||||||
})
|
|
||||||
|
|
||||||
const response = await client.getDirectoryContents(config.webdavPath)
|
|
||||||
const files = Array.isArray(response) ? response : response.data
|
const files = Array.isArray(response) ? response : response.data
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { WebDavConfig } from '@types'
|
import { WebDavConfig } from '@types'
|
||||||
import Logger from 'electron-log'
|
import Logger from 'electron-log'
|
||||||
import Stream from 'stream'
|
import Stream from 'stream'
|
||||||
|
import https from 'https'
|
||||||
import {
|
import {
|
||||||
BufferLike,
|
BufferLike,
|
||||||
createClient,
|
createClient,
|
||||||
@ -20,7 +21,8 @@ export default class WebDav {
|
|||||||
username: params.webdavUser,
|
username: params.webdavUser,
|
||||||
password: params.webdavPass,
|
password: params.webdavPass,
|
||||||
maxBodyLength: Infinity,
|
maxBodyLength: Infinity,
|
||||||
maxContentLength: Infinity
|
maxContentLength: Infinity,
|
||||||
|
httpsAgent: new https.Agent({ rejectUnauthorized: false })
|
||||||
})
|
})
|
||||||
|
|
||||||
this.putFileContents = this.putFileContents.bind(this)
|
this.putFileContents = this.putFileContents.bind(this)
|
||||||
@ -74,6 +76,19 @@ export default class WebDav {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getDirectoryContents = async () => {
|
||||||
|
if (!this.instance) {
|
||||||
|
throw new Error('WebDAV client not initialized')
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return await this.instance.getDirectoryContents(this.webdavPath)
|
||||||
|
} catch (error) {
|
||||||
|
Logger.error('[WebDAV] Error getting directory contents on WebDAV:', error)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public checkConnection = async () => {
|
public checkConnection = async () => {
|
||||||
if (!this.instance) {
|
if (!this.instance) {
|
||||||
throw new Error('WebDAV client not initialized')
|
throw new Error('WebDAV client not initialized')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user