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