deduplicate json config file access
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
|
||||
import { PROJECT_ROOT } from '../../../config/runtime.js'
|
||||
import { readJsonFile, writeJsonFile } from '../../../utils/json-file-store.js'
|
||||
|
||||
const KUAISHOU_ETICKET_SOURCE_FILE_PATH = path.join(PROJECT_ROOT, 'data', 'kuaishou-eticket-source.json')
|
||||
const DEFAULT_BASE_URL = 'https://s.kwaixiaodian.com'
|
||||
@@ -31,10 +31,11 @@ export function getKuaishouEticketSourceConfig(): KuaishouEticketSourceConfig {
|
||||
}
|
||||
|
||||
export function saveKuaishouEticketSourceConfig(rawValue: unknown): KuaishouEticketSourceConfig {
|
||||
const normalized = normalizeKuaishouEticketSourceConfig(rawValue)
|
||||
fs.mkdirSync(path.dirname(KUAISHOU_ETICKET_SOURCE_FILE_PATH), { recursive: true })
|
||||
fs.writeFileSync(KUAISHOU_ETICKET_SOURCE_FILE_PATH, `${JSON.stringify(normalized, null, 2)}\n`, 'utf8')
|
||||
return normalized
|
||||
return writeJsonFile(
|
||||
KUAISHOU_ETICKET_SOURCE_FILE_PATH,
|
||||
rawValue,
|
||||
normalizeKuaishouEticketSourceConfig,
|
||||
)
|
||||
}
|
||||
|
||||
export function listKuaishouEticketShopConfigs(source: KuaishouEticketSourceConfig = getKuaishouEticketSourceConfig()): KuaishouEticketShopConfig[] {
|
||||
@@ -81,16 +82,11 @@ export function getFirstAvailableKuaishouEticketShop(source: KuaishouEticketSour
|
||||
}
|
||||
|
||||
function loadKuaishouEticketSourceConfigFromFile(): KuaishouEticketSourceConfig {
|
||||
if (!fs.existsSync(KUAISHOU_ETICKET_SOURCE_FILE_PATH)) {
|
||||
return createDefaultKuaishouEticketSourceConfig()
|
||||
}
|
||||
|
||||
try {
|
||||
const rawText = fs.readFileSync(KUAISHOU_ETICKET_SOURCE_FILE_PATH, 'utf8')
|
||||
return normalizeKuaishouEticketSourceConfig(JSON.parse(rawText))
|
||||
} catch {
|
||||
return createDefaultKuaishouEticketSourceConfig()
|
||||
}
|
||||
return readJsonFile(
|
||||
KUAISHOU_ETICKET_SOURCE_FILE_PATH,
|
||||
createDefaultKuaishouEticketSourceConfig,
|
||||
normalizeKuaishouEticketSourceConfig,
|
||||
)
|
||||
}
|
||||
|
||||
function normalizeKuaishouEticketSourceConfig(rawValue: unknown): KuaishouEticketSourceConfig {
|
||||
|
||||
Reference in New Issue
Block a user