diff --git a/src/main/utils/common.ts b/src/main/utils/common.ts index ed174eb..8f200e4 100644 --- a/src/main/utils/common.ts +++ b/src/main/utils/common.ts @@ -116,14 +116,14 @@ export const handleUrlEncodeWithSetting = (url: string) => db.get(configPaths.se const c1nApi = 'https://c1n.cn/link/short' const generateC1NShortUrl = async (url: string) => { - const form = new FormData() - form.append('url', url) const c1nToken = db.get(configPaths.settings.c1nToken) || '' if (!c1nToken) { logger.warn('c1n token is not set') return url } try { + const form = new FormData() + form.append('url', url) const res = await axios.post(c1nApi, form, { headers: { token: c1nToken @@ -141,44 +141,47 @@ const generateC1NShortUrl = async (url: string) => { const generateYOURLSShortUrl = async (url: string) => { let domain = db.get(configPaths.settings.yourlsDomain) || '' const signature = db.get(configPaths.settings.yourlsSignature) || '' - if (domain && signature) { - if (!/^https?:\/\//.test(domain)) { - domain = `http://${domain}` - } - try { - const res = await axios.get(`${domain}/yourls-api.php?signature=${signature}&action=shorturl&format=json&url=${url}`) - if (res.data?.shorturl) { - return res.data.shorturl - } - } catch (e: any) { - if (e.response?.data?.message?.indexOf('already exists in database') !== -1) { - return e.response.data.shorturl - } - logger.error(e) - } - } else { + + if (!domain || !signature) { logger.warn('Yourls server or signature is not set') + return url } + if (!/^https?:\/\//.test(domain)) { + domain = `http://${domain}` + } + const params = new URLSearchParams({ signature, action: 'shorturl', format: 'json', url }) + try { + const res = await axios.get(`${domain}/yourls-api.php?${params.toString()}`) + if (res.data?.shorturl) { + return res.data.shorturl + } + } catch (e: any) { + if (e.response?.data?.message?.includes('already exists in database')) { + return e.response.data.shorturl + } + logger.error(e) + } + return url } const generateCFWORKERShortUrl = async (url: string) => { let cfWorkerHost = db.get(configPaths.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 { + if (!cfWorkerHost) { logger.warn('CF Worker host is not set') + return url } + + 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) + } + return url }