mirror of
https://github.com/ZSCGR/CloudFlare-ImgBed.git
synced 2026-08-19 15:13:44 +08:00
51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
import { getUploadConfig } from '../api/manage/sysConfig/upload.js';
|
|
import { getDatabase } from './databaseAdapter.js';
|
|
import { normalizeWebDAVHeaders } from './storage/webdavAPI.js';
|
|
|
|
export async function resolveWebDAVConfig(env, metadata = {}) {
|
|
const channelName = metadata.ChannelName;
|
|
const metadataBaseUrl = metadata.WebDAVBaseUrl;
|
|
|
|
try {
|
|
const db = getDatabase(env);
|
|
const uploadConfig = await getUploadConfig(db, env);
|
|
const channels = uploadConfig.webdav?.channels || [];
|
|
|
|
const channel = channels.find((item) => item.name === channelName)
|
|
|| channels.find((item) => getWebDAVBaseUrl(item) === metadataBaseUrl);
|
|
|
|
if (channel) {
|
|
return normalizeWebDAVConfig(channel);
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to resolve WebDAV channel config:', error);
|
|
}
|
|
|
|
return normalizeWebDAVConfig({
|
|
baseUrl: metadataBaseUrl,
|
|
username: metadata.WebDAVUsername || '',
|
|
password: metadata.WebDAVPassword || '',
|
|
headers: metadata.WebDAVHeaders || {},
|
|
createDirectory: metadata.WebDAVCreateDirectory !== false,
|
|
publicUrl: metadata.WebDAVPublicBaseUrl || '',
|
|
});
|
|
}
|
|
|
|
function normalizeWebDAVConfig(config = {}) {
|
|
const baseUrl = getWebDAVBaseUrl(config);
|
|
if (!baseUrl) return null;
|
|
|
|
return {
|
|
baseUrl,
|
|
username: config.username || '',
|
|
password: config.password || '',
|
|
headers: normalizeWebDAVHeaders(config.headers || config.customHeaders || {}),
|
|
createDirectory: config.createDirectory !== false,
|
|
publicUrl: config.publicUrl || '',
|
|
};
|
|
}
|
|
|
|
function getWebDAVBaseUrl(config = {}) {
|
|
return config.baseUrl || config.endpoint || config.url || '';
|
|
}
|