UNPKG

@wayota/redata-api-client

Version:

TypeScript client for the REData (Red Eléctrica de España) public API. Provides convenient methods to fetch Spanish electricity data widgets, supporting category, widget, date range, and geographic filters. The client is based on a custom OpenAPI specific

36 lines (35 loc) 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Client = void 0; const Lang_1 = require("./enums/Lang"); class Client { constructor(config = { baseUrl: 'https://apidatos.ree.es' }) { this.config = config; this.lang = Lang_1.Lang.es; } buildUrl({ category, widget, lang }) { return new URL(`${this.config.baseUrl}/${lang}/datos/${category}/${widget}`); } async getByCategoryByWidget(params) { const { lang = this.lang, category, widget, query } = params; const url = this.buildUrl({ category, widget, lang }); url.searchParams.set('start_date', query.startDate); url.searchParams.set('end_date', query.endDate); url.searchParams.set('time_trunc', query.timeTrunc); if (query.geotrunc) { url.searchParams.set('geo_trunc', query.geotrunc); } if (query.geoLimit) { url.searchParams.set('geo_limit', query.geoLimit); } if (query.geoIds) { url.searchParams.set('geo_ids', query.geoIds); } const response = await fetch(url.toString()); if (!response.ok) { throw new Error(`Error fetching data: ${response.statusText}`); } return response.json(); } } exports.Client = Client;