mirror of
https://github.com/tvishia29-alt/FXandRatesDashboard.git
synced 2026-07-28 00:17:44 +00:00
fixedfredkey
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
exports.handler = async () => {
|
||||
try {
|
||||
const key = process.env.FRED_API_KEY;
|
||||
if (!key) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({ error: "Missing FRED_API_KEY" })
|
||||
};
|
||||
}
|
||||
|
||||
const seriesMap = {
|
||||
y2: "DGS2",
|
||||
y10: "DGS10",
|
||||
y30: "DGS30",
|
||||
y3m: "DGS3MO"
|
||||
};
|
||||
|
||||
const entries = await Promise.all(
|
||||
Object.entries(seriesMap).map(async ([label, seriesId]) => {
|
||||
const url =
|
||||
"https://api.stlouisfed.org/fred/series/observations" +
|
||||
`?series_id=${seriesId}` +
|
||||
`&api_key=${key}` +
|
||||
"&file_type=json&sort_order=desc&limit=10";
|
||||
|
||||
const res = await fetch(url);
|
||||
const data = await res.json();
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(data?.error_message || `FRED failed for ${seriesId}`);
|
||||
}
|
||||
|
||||
const obs = (data.observations || []).find(x => x.value !== ".");
|
||||
return [label, obs ? Number(obs.value) : null];
|
||||
})
|
||||
);
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Cache-Control": "public, max-age=300"
|
||||
},
|
||||
body: JSON.stringify(Object.fromEntries(entries))
|
||||
};
|
||||
} catch (err) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({ error: err.message || "fred-yields failed" })
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user