From 983ab0f184ab0db56d14e63cafa4ec4d19e58255 Mon Sep 17 00:00:00 2001 From: yaleiyale Date: Sun, 26 Feb 2023 14:18:32 +0800 Subject: [PATCH] Add github CDN switch --- manifest.json | 2 +- src/fragment/fragment-github.ts | 17 +++++++++++++++++ src/lang/locale/en.ts | 1 + src/lang/locale/zh-cn.ts | 1 + src/lang/locale/zh-tw.ts | 1 + src/parms/parms-github.ts | 11 +++++++++-- src/uploader/uploader-github.ts | 20 ++++++++++++++++++-- 7 files changed, 48 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index aa6ebfc..66da946 100755 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "emo-uploader", "name": "Emo", - "version": "2.13", + "version": "2.14", "minAppVersion": "0.15.6", "description": "Embed markdown online file/image links. This plugin is for uploading images to hosting or files to github in Obsidian.", "author": "yaleiyale", diff --git a/src/fragment/fragment-github.ts b/src/fragment/fragment-github.ts index 7b8573c..5e85792 100644 --- a/src/fragment/fragment-github.ts +++ b/src/fragment/fragment-github.ts @@ -3,6 +3,7 @@ import Emo from '../main' import { EmoFragment } from '../base/emo-fragment' import { HostingProvider } from '../config' import { t } from '../lang/helpers' +import { CDNprovider } from '../parms/parms-github' export class GithubFragment extends EmoFragment { constructor (el: HTMLElement, plugin: Emo) { @@ -91,5 +92,21 @@ export class GithubFragment extends EmoFragment { await plugin.saveSettings() }) }) + + const supportList: string[] = [] + for (const key in CDNprovider) { + supportList.push(CDNprovider[key as keyof typeof CDNprovider]) + } + + new Setting(el) + .setName(t('cdn')) + .addDropdown((dropdown) => { + supportList.forEach((record) => { dropdown.addOption(record, record) }) + dropdown.setValue(parms.cdn) + .onChange(async (value) => { + parms.cdn = value as CDNprovider + await plugin.saveSettings() + }) + }) } } diff --git a/src/lang/locale/en.ts b/src/lang/locale/en.ts index 21f0b0d..f6018f2 100644 --- a/src/lang/locale/en.ts +++ b/src/lang/locale/en.ts @@ -22,6 +22,7 @@ export default { token: 'token', message: 'message', path: 'path', + cdn: 'CDN', 'random filename': 'random filename', 'random filename desc': 'Random file names will greatly avoid duplicate file names. If you are sure that you need to use the original file name during this upload, make sure that no duplicate naming will occur under the path you choose.', // fragment-imgbb.ts diff --git a/src/lang/locale/zh-cn.ts b/src/lang/locale/zh-cn.ts index 5cce61f..2ccb789 100644 --- a/src/lang/locale/zh-cn.ts +++ b/src/lang/locale/zh-cn.ts @@ -22,6 +22,7 @@ export default { token: '令牌', message: '提交信息', path: '路径', + cdn: 'CDN', 'random filename': '随机文件名', 'random filename desc': '采用随机文件名将极大避免重名。如果确定在上传过程中需要使用原文件名,请确保所选路径下不会出现重名问题。', // fragment-imgbb.ts diff --git a/src/lang/locale/zh-tw.ts b/src/lang/locale/zh-tw.ts index de67049..1fa5231 100644 --- a/src/lang/locale/zh-tw.ts +++ b/src/lang/locale/zh-tw.ts @@ -22,6 +22,7 @@ export default { token: '令牌', message: '提交資訊', path: '路徑', + cdn: 'CDN', 'random filename': '隨機檔名', 'random filename desc': '採用隨機檔名將極大避免重名。如果確定在上傳過程中需要使用原檔名,請確保所選路徑下不會出現重名問題。', // fragment-imgbb.ts diff --git a/src/parms/parms-github.ts b/src/parms/parms-github.ts index 3cb7c6d..1ee2791 100644 --- a/src/parms/parms-github.ts +++ b/src/parms/parms-github.ts @@ -1,10 +1,16 @@ import { EmoParms } from '../base/emo-parms' - +export enum CDNprovider { // Github CDN + jsdelivr = 'jsdelivr', + statically = 'statically', + raw = 'raw' +} export interface GithubParms extends EmoParms { required: Required path: string random: boolean + cdn: CDNprovider } + interface Required { owner: string repo: string @@ -21,5 +27,6 @@ export const GITHUB_DEFAULT_PARMS: GithubParms = { message: 'from emo-uploader·Github' }, path: '', - random: true + random: true, + cdn: CDNprovider.raw } diff --git a/src/uploader/uploader-github.ts b/src/uploader/uploader-github.ts index 5e5aa5b..0335fb2 100644 --- a/src/uploader/uploader-github.ts +++ b/src/uploader/uploader-github.ts @@ -1,5 +1,5 @@ import { request, RequestUrlParam } from 'obsidian' -import { GithubParms } from '../parms/parms-github' +import { CDNprovider, GithubParms } from '../parms/parms-github' import { getBase64, getRandomFileName } from '../utils/file-helper' import { EmoUploader } from '../base/emo-uploader' @@ -39,7 +39,23 @@ export class GithubUploader extends EmoUploader { return await new Promise((resolve, reject) => { request(req).then(() => { - const markdownText = `![gh](https://fastly.jsdelivr.net/gh/${this.parms.required.owner}/${this.parms.required.repo}@${this.parms.required.branch}/${filePath})` + let markdownText: string + console.log(this.parms.cdn) + switch (this.parms.cdn) { + case CDNprovider.jsdelivr: + markdownText = `![gh](https://cdn.jsdelivr.net/gh/${this.parms.required.owner}/${this.parms.required.repo}@${this.parms.required.branch}/${filePath})` + break + case CDNprovider.statically: + markdownText = `![gh](https://cdn.statically.io/gh/${this.parms.required.owner}/${this.parms.required.repo}/${this.parms.required.branch}/${filePath})` + break + case CDNprovider.raw: + markdownText = `![gh](https://raw.githubusercontent.com/${this.parms.required.owner}/${this.parms.required.repo}/${this.parms.required.branch}/${filePath})` + break + default: + // use raw + markdownText = `![gh](https://raw.githubusercontent.com/${this.parms.required.owner}/${this.parms.required.repo}/${this.parms.required.branch}/${filePath})` + break + } resolve(markdownText) }).catch(err => { reject(err)