mirror of
https://github.com/qier222/YesPlayMusic.git
synced 2025-03-01 02:09:38 +08:00
81 lines
1.7 KiB
TypeScript
81 lines
1.7 KiB
TypeScript
import Cookies, { CookieAttributes } from 'js-cookie'
|
|
|
|
interface Cookie {
|
|
key: string
|
|
value: string
|
|
options?: CookieAttributes
|
|
}
|
|
|
|
export function parseCookies(cookie: string): Cookie[] {
|
|
const cookies: Cookie[] = []
|
|
let tmpCookie: Cookie | null = null
|
|
cookie.split(';').forEach(item => {
|
|
const splittedItem = item.split('=')
|
|
if (splittedItem.length !== 2) return
|
|
|
|
const key = splittedItem[0].trim()
|
|
const value = splittedItem[1].trim()
|
|
|
|
if (key.toLowerCase() === 'expires') return
|
|
if (key.toLowerCase() === 'max-age') {
|
|
const expires = Number(value) / 60 / 60 / 24
|
|
if (isNaN(expires)) return
|
|
tmpCookie = {
|
|
...((tmpCookie as Cookie) ?? {}),
|
|
options: {
|
|
...tmpCookie?.options,
|
|
expires: expires,
|
|
},
|
|
}
|
|
return
|
|
}
|
|
|
|
if (key.toLowerCase() === 'path') {
|
|
tmpCookie = {
|
|
...((tmpCookie as Cookie) ?? {}),
|
|
options: {
|
|
...tmpCookie?.options,
|
|
path: value,
|
|
},
|
|
}
|
|
return
|
|
}
|
|
|
|
if (tmpCookie) cookies.push(tmpCookie)
|
|
|
|
tmpCookie = {
|
|
key,
|
|
value,
|
|
}
|
|
})
|
|
|
|
if (tmpCookie) cookies.push(tmpCookie)
|
|
|
|
return cookies
|
|
}
|
|
|
|
export function setCookies(string: string) {
|
|
const cookies = parseCookies(string)
|
|
cookies.forEach(cookie => {
|
|
Cookies.set(cookie.key, cookie.value, cookie.options)
|
|
})
|
|
}
|
|
|
|
export function getCookie(key: string) {
|
|
return Cookies.get(key)
|
|
}
|
|
|
|
export function removeCookie(key: string) {
|
|
Cookies.remove(key)
|
|
}
|
|
|
|
export function removeAllCookies() {
|
|
const cookies = document.cookie.split(';')
|
|
|
|
cookies.forEach(cookie => {
|
|
const splitted = cookie.split('=')
|
|
const name = splitted[0].trim()
|
|
document.cookie = `${name}=;max-age=0`
|
|
})
|
|
}
|