From 9c6504c2180b3dc999070bd6e385bcc003eb9bce Mon Sep 17 00:00:00 2001 From: Kuingsmile Date: Mon, 11 Mar 2024 22:04:50 +0800 Subject: [PATCH] :sparkles: Feature(custom): add support for cf worker short url service ISSUES CLOSED: #170 --- public/i18n/en.yml | 1 + public/i18n/zh-CN.yml | 1 + public/i18n/zh-TW.yml | 1 + src/main/utils/common.ts | 17 +++++++++++++++++ src/renderer/pages/PicGoSetting.vue | 22 ++++++++++++++++++++++ src/universal/types/i18n.d.ts | 1 + src/universal/types/view.d.ts | 1 + 7 files changed, 44 insertions(+) diff --git a/public/i18n/en.yml b/public/i18n/en.yml index 32ddf63..ece9875 100644 --- a/public/i18n/en.yml +++ b/public/i18n/en.yml @@ -249,6 +249,7 @@ SETTINGS_SHORT_URL_SERVER: Short url server SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS domain SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature +SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: Delete local file after upload SETTINGS_SYNC_CONFIG: Settings Sync Configuration SETTINGS_SYNC_CONFIG_TITLE: Sync Settings diff --git a/public/i18n/zh-CN.yml b/public/i18n/zh-CN.yml index 02f9054..8715aed 100644 --- a/public/i18n/zh-CN.yml +++ b/public/i18n/zh-CN.yml @@ -252,6 +252,7 @@ SETTINGS_SHORT_URL_SERVER: 短链接服务 SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名 SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature +SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker域名 SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上传后删除本地文件 SETTINGS_SYNC_CONFIG: 设置配置同步 SETTINGS_SYNC_CONFIG_TITLE: 同步设置 diff --git a/public/i18n/zh-TW.yml b/public/i18n/zh-TW.yml index 0dce1e3..a83292c 100644 --- a/public/i18n/zh-TW.yml +++ b/public/i18n/zh-TW.yml @@ -250,6 +250,7 @@ SETTINGS_SHORT_URL_SERVER: 短網址服務 SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名 SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature +SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上傳後刪除本地檔案 SETTINGS_SYNC_CONFIG: 設置同步配置 SETTINGS_SYNC_CONFIG_TITLE: 同步設置 diff --git a/src/main/utils/common.ts b/src/main/utils/common.ts index 9542b55..7b52876 100644 --- a/src/main/utils/common.ts +++ b/src/main/utils/common.ts @@ -169,6 +169,23 @@ export const generateShortUrl = async (url: string) => { } else { logger.warn('Yourls server or signature is not set') } + } else if (server === 'cf_worker') { + let cfWorkerHost = db.get('settings.cfWorkerHost') || '' + cfWorkerHost = cfWorkerHost.replace(/\/$/, '') + if (cfWorkerHost) { + try { + const res = await axios.post(cfWorkerHost, { + url + }) + if (res.data.status === 200 && res.data.key.startsWith('/')) { + return `${cfWorkerHost}${res.data.key}` + } + } catch (e: any) { + logger.error(e) + } + } else { + logger.warn('CF Worker host is not set') + } } return url } diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue index 3cd8f00..33ebdab 100644 --- a/src/renderer/pages/PicGoSetting.vue +++ b/src/renderer/pages/PicGoSetting.vue @@ -521,6 +521,18 @@ @change="handleYourlsSignatureChange" /> + + + @@ -1686,6 +1698,10 @@ const shortUrlServerList = [{ { label: 'yourls', value: 'yourls' +}, +{ + label: 'xyTom/Url-Shorten-Worker', + value: 'cf_worker' } ] @@ -1851,6 +1867,7 @@ const form = reactive({ c1nToken: '', yourlsDomain: '', yourlsSignature: '', + cfWorkerHost: '', deleteLocalFile: false, serverKey: '', aesPassword: '', @@ -2017,6 +2034,7 @@ async function initData () { form.c1nToken = settings.c1nToken || '' form.yourlsDomain = settings.yourlsDomain || '' form.yourlsSignature = settings.yourlsSignature || '' + form.cfWorkerHost = settings.cfWorkerHost || '' form.deleteLocalFile = settings.deleteLocalFile || false form.serverKey = settings.serverKey || '' form.aesPassword = settings.aesPassword || 'PicList-aesPassword' @@ -2380,6 +2398,10 @@ function handleYourlsSignatureChange (val: string) { saveConfig('settings.yourlsSignature', val) } +function handleCfWorkerHostChange (val: string) { + saveConfig('settings.cfWorkerHost', val) +} + function handleAesPasswordChange (val: string) { saveConfig('settings.aesPassword', val || 'PicList-aesPassword') } diff --git a/src/universal/types/i18n.d.ts b/src/universal/types/i18n.d.ts index 3ed06f5..3c5db6d 100644 --- a/src/universal/types/i18n.d.ts +++ b/src/universal/types/i18n.d.ts @@ -245,6 +245,7 @@ interface ILocales { SETTINGS_SHORT_URL_C1N_TOKEN: string SETTINGS_SHORT_URL_YOURLS_DOMAIN: string SETTINGS_SHORT_URL_YOURLS_SIGNATURE: string + SETTINGS_SHORT_URL_CF_WORKER_HOST: string SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: string SETTINGS_SYNC_CONFIG: string SETTINGS_SYNC_CONFIG_TITLE: string diff --git a/src/universal/types/view.d.ts b/src/universal/types/view.d.ts index 1e450e0..0e0ec2d 100644 --- a/src/universal/types/view.d.ts +++ b/src/universal/types/view.d.ts @@ -28,6 +28,7 @@ interface ISettingForm { shortUrlServer: string, yourlsDomain: string, yourlsSignature: string, + cfWorkerHost: string, deleteLocalFile: boolean, serverKey: string, aesPassword: string,