mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-15 07:17:30 +00:00
Add feed discovery plugin
This commit is contained in:
parent
e47616bf9d
commit
5cfeea6b57
37 changed files with 2432 additions and 5 deletions
34
plugins/feed-discovery/src/config.ts
Normal file
34
plugins/feed-discovery/src/config.ts
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import type { FeedDiscoveryConfig } from "./types.js";
|
||||
|
||||
const DEFAULT_TIMEOUT_MS = 8_000;
|
||||
const DEFAULT_MAX_BODY_BYTES = 1_000_000;
|
||||
|
||||
export function readFeedDiscoveryConfig(env: NodeJS.ProcessEnv = process.env): FeedDiscoveryConfig {
|
||||
return {
|
||||
cacheTtlSeconds: readNumber(env.LOGICSRC_FEEDS_CACHE_TTL_SECONDS, 86_400),
|
||||
maxProviders: readNumber(env.LOGICSRC_FEEDS_MAX_PROVIDERS, 10),
|
||||
maxProbes: readNumber(env.LOGICSRC_FEEDS_MAX_PROBES, 50),
|
||||
requestTimeoutMs: readNumber(env.LOGICSRC_FEEDS_REQUEST_TIMEOUT_MS, DEFAULT_TIMEOUT_MS),
|
||||
maxBodyBytes: readNumber(env.LOGICSRC_FEEDS_MAX_BODY_BYTES, DEFAULT_MAX_BODY_BYTES),
|
||||
userAgent: env.LOGICSRC_FEEDS_USER_AGENT || "LogicSrcFeedDiscovery/0.1",
|
||||
opmlPaths: splitList(env.LOGICSRC_FEEDS_OPML_PATHS),
|
||||
candidateUrls: splitList(env.LOGICSRC_FEEDS_CANDIDATE_URLS),
|
||||
podcastIndexApiKey: env.PODCASTINDEX_API_KEY,
|
||||
podcastIndexApiSecret: env.PODCASTINDEX_API_SECRET
|
||||
};
|
||||
}
|
||||
|
||||
function readNumber(value: string | undefined, fallback: number) {
|
||||
if (!value) {
|
||||
return fallback;
|
||||
}
|
||||
const parsed = Number(value);
|
||||
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
||||
}
|
||||
|
||||
function splitList(value: string | undefined) {
|
||||
return (value ?? "")
|
||||
.split(",")
|
||||
.map((entry) => entry.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue