Files
yenai-plugin/model/State/style.js
2024-04-19 01:53:09 +08:00

33 lines
1.1 KiB
JavaScript

import { Config } from "../../components/index.js"
import requset from "../../lib/request/request.js"
import { createAbortCont } from "./utils.js"
export async function getBackground() {
const { backdrop, backdropDefault } = Config.state
if (!isValidUrl(backdrop)) {
return backdrop
}
let { controller, clearTimeout } = await createAbortCont(5000)
try {
const buffer = await requset.get(backdrop, {
statusCode: "arrayBuffer",
signal: controller.signal
})
const buffBase64 = arrayBufferToBase64(buffer)
return `data:image/jpeg;base64,${buffBase64}`
} catch (err) {
logger.error(`Error state background image: ${err}`)
const Plugin_Path = "../../../../../plugins/yenai-plugin"
return `${Plugin_Path}/resources/state/img/${backdropDefault}`
} finally {
clearTimeout()
}
}
function arrayBufferToBase64(arrayBuffer) {
return Buffer.from(arrayBuffer).toString("base64")
}
function isValidUrl(str) {
const urlRegex = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#[\]@!$&'()*+,;=.]+$/
return urlRegex.test(str)
}