borsa / nextjs-app /src /lib /runtime-config.ts
veteroner's picture
feat: live position monitoring with charts + trading system production ready
656ac31
function normalizeApiBase(raw: string): string {
const trimmed = String(raw || '').trim().replace(/\/+$/, '')
if (!trimmed) return ''
// Accept both "https://host" and "https://host/api" forms.
// Our code appends "/api/..." paths, so strip a trailing "/api" to avoid "/api/api".
return trimmed.replace(/\/api$/, '')
}
export const API_BASE = normalizeApiBase(
process.env.API_URL || process.env.NEXT_PUBLIC_API_URL || ''
)
export const isApiConfigured = Boolean(process.env.API_URL || process.env.NEXT_PUBLIC_API_URL);
export function requireApiBase() {
if (!API_BASE) {
throw new Error('API URL yapılandırılmamış. API_URL (veya NEXT_PUBLIC_API_URL) tanımlayın.');
}
return API_BASE;
}
/** Standardised User-Agent for outgoing server-side fetches */
export const USER_AGENT = 'borsa-nextjs/1.0'
/** Browser-like User-Agent for sites that reject bot-like headers (e.g. Yahoo Finance) */
export const BROWSER_USER_AGENT =
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
export function apiUrl(path: string) {
const base = requireApiBase();
if (!path) return base;
return `${base}${path.startsWith('/') ? '' : '/'}${path}`;
}