mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-05-10 17:42:45 +08:00
🐛 Fix(custom): fix url copy error for dirs
This commit is contained in:
@@ -53,9 +53,10 @@ class AliyunApi {
|
||||
this.logger = logger
|
||||
}
|
||||
|
||||
formatFolder (item: string, slicedPrefix: string) {
|
||||
formatFolder (item: string, slicedPrefix: string, urlPrefix: string): any {
|
||||
return {
|
||||
key: item,
|
||||
url: `${urlPrefix}/${item}`,
|
||||
fileSize: 0,
|
||||
formatedTime: '',
|
||||
fileName: item.replace(slicedPrefix, '').replace('/', ''),
|
||||
@@ -288,7 +289,7 @@ class AliyunApi {
|
||||
})
|
||||
if (res?.res?.statusCode === 200) {
|
||||
res?.prefixes?.forEach((item: string) => {
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
res?.objects?.forEach((item: OSS.ObjectMeta) => {
|
||||
item.size !== 0 && result.fullList.push(this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
@@ -348,7 +349,7 @@ class AliyunApi {
|
||||
}
|
||||
}
|
||||
const fullList = [
|
||||
...(res.prefixes?.map((item: string) => this.formatFolder(item, slicedPrefix)) || []),
|
||||
...(res.prefixes?.map((item: string) => this.formatFolder(item, slicedPrefix, urlPrefix)) || []),
|
||||
...(res.objects?.filter((item: OSS.ObjectMeta) => item.size !== 0).map((item: OSS.ObjectMeta) => this.formatFile(item, slicedPrefix, urlPrefix)) || [])
|
||||
]
|
||||
return {
|
||||
|
||||
@@ -52,11 +52,23 @@ class GithubApi {
|
||||
}
|
||||
}
|
||||
|
||||
formatFolder (item: any, slicedPrefix: string) {
|
||||
formatFolder (item: any, slicedPrefix: string, branch: string, repo: string, cdnUrl: string | undefined) {
|
||||
const key = `${slicedPrefix ? `${slicedPrefix}/` : ''}${item.path}/`
|
||||
let rawUrl = ''
|
||||
const placeholders = ['{username}', '{repo}', '{branch}', '{path}']
|
||||
rawUrl = cdnUrl
|
||||
? placeholders.some(item => cdnUrl.includes(item))
|
||||
? placeholders.reduce((url, ph) => {
|
||||
const value = ph === '{username}' ? this.username : ph === '{repo}' ? repo : ph === '{branch}' ? branch : ph === '{path}' ? key : ''
|
||||
return url.replaceAll(ph, value)
|
||||
}, cdnUrl)
|
||||
: `${cdnUrl}/${key}`
|
||||
: `https://raw.githubusercontent.com/${this.username}/${repo}/${branch}/${key}`
|
||||
rawUrl = rawUrl.replace(/(?<!https?:)\/{2,}/g, '/')
|
||||
return {
|
||||
...item,
|
||||
Key: key,
|
||||
url: rawUrl,
|
||||
key,
|
||||
fileSize: 0,
|
||||
formatedTime: '',
|
||||
@@ -224,7 +236,7 @@ class GithubApi {
|
||||
if (res && res.statusCode === 200) {
|
||||
res.body.tree.forEach((item: any) => {
|
||||
if (item.type === 'tree') {
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix, branch, repo, cdnUrl))
|
||||
} else {
|
||||
result.fullList.push(this.formatFile(item, slicedPrefix, branch, repo, cdnUrl))
|
||||
}
|
||||
|
||||
@@ -52,10 +52,11 @@ class QiniuApi {
|
||||
this.logger = logger
|
||||
}
|
||||
|
||||
formatFolder (item: string, slicedPrefix: string) {
|
||||
formatFolder (item: string, slicedPrefix: string, urlPrefix: string) {
|
||||
return {
|
||||
Key: item,
|
||||
key: item,
|
||||
url: `${urlPrefix}/${item}`,
|
||||
fileSize: 0,
|
||||
fileName: item.replace(slicedPrefix, '').replace('/', ''),
|
||||
isDir: true,
|
||||
@@ -342,7 +343,7 @@ class QiniuApi {
|
||||
})
|
||||
if (res && res.respInfo.statusCode === 200) {
|
||||
res.respBody && res.respBody.commonPrefixes && res.respBody.commonPrefixes.forEach((item: any) => {
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
res.respBody && res.respBody.items && res.respBody.items.forEach((item: any) => {
|
||||
item.fsize !== 0 && result.fullList.push(this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
@@ -409,7 +410,7 @@ class QiniuApi {
|
||||
if (res?.respInfo?.statusCode === 200) {
|
||||
if (res.respBody?.commonPrefixes) {
|
||||
res.respBody.commonPrefixes.forEach((item: string) => {
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
}
|
||||
if (res.respBody?.items) {
|
||||
|
||||
@@ -144,9 +144,10 @@ class S3plistApi {
|
||||
logParam = (error:any, method: string) =>
|
||||
this.logger.error(formatError(error, { class: 'S3plistApi', method }))
|
||||
|
||||
formatFolder (item: CommonPrefix, slicedPrefix: string): any {
|
||||
formatFolder (item: CommonPrefix, slicedPrefix: string, urlPrefix: string): any {
|
||||
return {
|
||||
Key: item.Prefix,
|
||||
url: `${urlPrefix}/${item.Prefix}`,
|
||||
fileSize: 0,
|
||||
formatedTime: '',
|
||||
fileName: item.Prefix?.replace(slicedPrefix, '').replace('/', ''),
|
||||
@@ -419,7 +420,7 @@ class S3plistApi {
|
||||
res = await client.send(command)
|
||||
if (res.$metadata.httpStatusCode === 200) {
|
||||
res.CommonPrefixes && res.CommonPrefixes.forEach((item: CommonPrefix) => {
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
res.Contents && res.Contents.forEach((item: _Object) => {
|
||||
result.fullList.push(this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
@@ -471,7 +472,7 @@ class S3plistApi {
|
||||
const data = await client.send(command)
|
||||
if (data.$metadata.httpStatusCode === 200) {
|
||||
result.fullList = [
|
||||
...(data.CommonPrefixes?.map(item => this.formatFolder(item, slicedPrefix)) || []),
|
||||
...(data.CommonPrefixes?.map(item => this.formatFolder(item, slicedPrefix, urlPrefix)) || []),
|
||||
...(data.Contents?.map(item => this.formatFile(item, slicedPrefix, urlPrefix)) || [])
|
||||
]
|
||||
result.isTruncated = data.IsTruncated || false
|
||||
|
||||
@@ -46,11 +46,12 @@ class TcyunApi {
|
||||
this.logger = logger
|
||||
}
|
||||
|
||||
formatFolder (item: {Prefix: string}, slicedPrefix: string): any {
|
||||
formatFolder (item: {Prefix: string}, slicedPrefix: string, urlPrefix: string) {
|
||||
return {
|
||||
...item,
|
||||
key: item.Prefix,
|
||||
fileSize: 0,
|
||||
url: `${urlPrefix}/${item.Prefix}`,
|
||||
formatedTime: '',
|
||||
fileName: item.Prefix.replace(slicedPrefix, '').replace('/', ''),
|
||||
isDir: true,
|
||||
@@ -191,7 +192,7 @@ class TcyunApi {
|
||||
})
|
||||
if (res?.statusCode === 200) {
|
||||
result.fullList.push(
|
||||
...res.CommonPrefixes.map(item => this.formatFolder(item, slicedPrefix)),
|
||||
...res.CommonPrefixes.map(item => this.formatFolder(item, slicedPrefix, urlPrefix)),
|
||||
...res.Contents.filter(item => parseInt(item.Size) !== 0)
|
||||
.map(item => this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
)
|
||||
@@ -247,7 +248,7 @@ class TcyunApi {
|
||||
}
|
||||
const result = {
|
||||
fullList: [
|
||||
...res.CommonPrefixes.map(item => this.formatFolder(item, slicedPrefix)),
|
||||
...res.CommonPrefixes.map(item => this.formatFolder(item, slicedPrefix, urlPrefix)),
|
||||
...res.Contents.filter(item => parseInt(item.Size) !== 0)
|
||||
.map(item => this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
],
|
||||
|
||||
@@ -67,11 +67,16 @@ class UpyunApi {
|
||||
return `_upt=${upt}`
|
||||
}
|
||||
|
||||
formatFolder (item: any, slicedPrefix: string) {
|
||||
formatFolder (item: any, slicedPrefix: string, urlPrefix: string) {
|
||||
const key = `${slicedPrefix}${item.name}/`
|
||||
let url = `${urlPrefix}/${key}`
|
||||
if (this.antiLeechToken) {
|
||||
url = `${url}?${this.getAntiLeechParam(key)}`
|
||||
}
|
||||
return {
|
||||
...item,
|
||||
key,
|
||||
url,
|
||||
fileSize: 0,
|
||||
formatedTime: '',
|
||||
fileName: item.name,
|
||||
@@ -202,7 +207,7 @@ class UpyunApi {
|
||||
if (res) {
|
||||
res.files?.forEach((item: any) => {
|
||||
item.type === 'N' && result.fullList.push(this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
item.type === 'F' && result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
item.type === 'F' && result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
window.webContents.send('refreshFileTransferList', result)
|
||||
} else {
|
||||
@@ -252,7 +257,7 @@ class UpyunApi {
|
||||
if (res) {
|
||||
res.files?.forEach((item: any) => {
|
||||
item.type === 'N' && result.fullList.push(this.formatFile(item, slicedPrefix, urlPrefix))
|
||||
item.type === 'F' && result.fullList.push(this.formatFolder(item, slicedPrefix))
|
||||
item.type === 'F' && result.fullList.push(this.formatFolder(item, slicedPrefix, urlPrefix))
|
||||
})
|
||||
result.isTruncated = res.next !== this.stopMarker
|
||||
result.nextMarker = res.next
|
||||
|
||||
Reference in New Issue
Block a user