UNPKG

@golemio/energetics

Version:
83 lines 5.27 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var PpasAveApiDataSourceProvider_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.PpasAveApiDataSourceProvider = void 0; const AveApiDeviceDataJsonSchema_1 = require("../../../../schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema"); const AveApiPlacesJsonSchema_1 = require("../../../../schema-definitions/datasources/commodity-providers/AveApiPlacesJsonSchema"); const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken"); const integration_engine_1 = require("@golemio/core/dist/integration-engine"); const HTTPFetchProtocolStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/protocol-strategy/HTTPFetchProtocolStrategy"); const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors"); const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const PpasAveApiHelper_1 = require("./helpers/PpasAveApiHelper"); let PpasAveApiDataSourceProvider = exports.PpasAveApiDataSourceProvider = PpasAveApiDataSourceProvider_1 = class PpasAveApiDataSourceProvider { constructor(config) { this.config = config; } getDataSource(resourceType, sessionId, params) { const baseUrl = this.config.getValue("module.energetics.commodityProviders.ppas_ave_api.baseUrl"); const url = new URL(baseUrl); url.pathname += "/" + resourceType; url.searchParams.append("sessionId", sessionId); url.searchParams.append("limit", PpasAveApiDataSourceProvider_1.MAX_RESULTS.toString()); if (params) { url.searchParams.append("placeId", params.placeId.toString()); url.searchParams.append("dateFrom", params.dateFrom); url.searchParams.append("dateTo", params.dateTo); url.searchParams.append("isoDate", params.isoDate); url.searchParams.append("dataType", params.dataType); } return new integration_engine_1.DataSource(PpasAveApiDataSourceProvider_1.DATASOURCE_NAME, this.getProtocolStrategy(url, sessionId), this.getDataTypeStrategy(resourceType), this.getJsonSchemaValidator(resourceType)); } getProtocolStrategy(url, sessionId) { return new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({ method: "GET", headers: { Accept: "application/json", }, timeoutInSeconds: 20, url: url.toString(), }); } getDataTypeStrategy(resourceType) { switch (resourceType) { case PpasAveApiHelper_1.PpasAveApiHelper.resourceType.Places: return new integration_engine_1.JSONDataTypeStrategy({ resultsPath: "PageItems" }); case PpasAveApiHelper_1.PpasAveApiHelper.resourceType.DeviceData: return new integration_engine_1.JSONDataTypeStrategy({ resultsPath: "" }); default: throw new golemio_errors_1.GeneralError(`Unknown resource type: ${resourceType}`, PpasAveApiDataSourceProvider_1.name); } } getJsonSchemaValidator(resourceType) { switch (resourceType) { case PpasAveApiHelper_1.PpasAveApiHelper.resourceType.Places: return new golemio_validator_1.JSONSchemaValidator(PpasAveApiDataSourceProvider_1.DATASOURCE_NAME + "Places", AveApiPlacesJsonSchema_1.aveApiPlacesJsonSchema); case PpasAveApiHelper_1.PpasAveApiHelper.resourceType.DeviceData: return new golemio_validator_1.JSONSchemaValidator(PpasAveApiDataSourceProvider_1.DATASOURCE_NAME + "DeviceData", AveApiDeviceDataJsonSchema_1.aveApiDeviceDataJsonSchema); default: throw new golemio_errors_1.GeneralError(`Unknown resource type: ${resourceType}`, PpasAveApiDataSourceProvider_1.name); } } }; PpasAveApiDataSourceProvider.DATASOURCE_NAME = "PpasAveApiDataSource"; PpasAveApiDataSourceProvider.MAX_RESULTS = 10000; exports.PpasAveApiDataSourceProvider = PpasAveApiDataSourceProvider = PpasAveApiDataSourceProvider_1 = __decorate([ (0, tsyringe_1.injectable)(), __param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)), __metadata("design:paramtypes", [Object]) ], PpasAveApiDataSourceProvider); //# sourceMappingURL=PpasAveApiDataSourceProvider.js.map