Spaces:
Running
Running
import * as fs from 'fs'; | |
import * as https from 'https'; | |
import { config } from '../config'; | |
// Create HTTPS agent with certificate authentication | |
let httpsAgent: https.Agent | undefined; | |
if (config.vespaCertPath && config.vespaKeyPath) { | |
try { | |
httpsAgent = new https.Agent({ | |
cert: fs.readFileSync(config.vespaCertPath), | |
key: fs.readFileSync(config.vespaKeyPath), | |
rejectUnauthorized: false | |
}); | |
} catch (error) { | |
console.error('Failed to load Vespa certificates:', error); | |
} | |
} | |
export async function vespaFetch(url: string, options: RequestInit = {}) { | |
// For Node.js 18+, we need to use undici or node-fetch with agent support | |
const fetch = globalThis.fetch; | |
if (httpsAgent) { | |
// @ts-ignore - agent is not in standard fetch types but works in Node.js | |
return fetch(url, { | |
...options, | |
agent: httpsAgent | |
}); | |
} | |
return fetch(url, options); | |
} |