@golemio/energetics
Version:
Golemio Energetics Module
83 lines • 5.27 kB
JavaScript
;
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