2023-02-15 10:36:47 -05:00
|
|
|
import OSS from 'ali-oss'
|
|
|
|
|
2023-04-26 05:01:55 -04:00
|
|
|
interface IConfigMap {
|
|
|
|
fileName: string
|
|
|
|
config: {
|
|
|
|
accessKeyId: string
|
|
|
|
accessKeySecret: string
|
|
|
|
bucket: string
|
|
|
|
area: string
|
|
|
|
path?: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-15 10:36:47 -05:00
|
|
|
export default class AliyunApi {
|
2023-06-29 08:00:46 -04:00
|
|
|
private static createClient (config: IConfigMap['config']): OSS {
|
|
|
|
const { accessKeyId, accessKeySecret, bucket, area } = config
|
|
|
|
return new OSS({
|
|
|
|
accessKeyId,
|
|
|
|
accessKeySecret,
|
|
|
|
bucket,
|
|
|
|
region: area
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
private static getKey (fileName: string, path?: string): string {
|
|
|
|
return path && path !== '/'
|
|
|
|
? `${path.replace(/^\//, '').replace(/\/$/, '')}/${fileName}`
|
|
|
|
: fileName
|
|
|
|
}
|
|
|
|
|
2023-04-26 05:01:55 -04:00
|
|
|
static async delete (configMap: IConfigMap): Promise<boolean> {
|
2023-06-29 08:00:46 -04:00
|
|
|
const { fileName, config } = configMap
|
2023-02-15 10:36:47 -05:00
|
|
|
try {
|
2023-06-29 08:00:46 -04:00
|
|
|
const client = AliyunApi.createClient(config)
|
|
|
|
const key = AliyunApi.getKey(fileName, config.path)
|
2023-02-15 10:36:47 -05:00
|
|
|
const result = await client.delete(key) as any
|
|
|
|
return result.res.status === 204
|
|
|
|
} catch (error) {
|
2023-06-29 08:00:46 -04:00
|
|
|
console.error(error)
|
2023-02-15 10:36:47 -05:00
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|