@golemio/parkings
Version:
Golemio Parkings Module
61 lines • 3.98 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.v3ParkingRouter = void 0;
const ParkingPolicyEnum_1 = require("../../../helpers/constants/ParkingPolicyEnum");
const V3ParkingController_1 = require("../../controllers/v3/V3ParkingController");
const Di_1 = require("../../ioc/Di");
const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
const AbstractRouter_1 = require("@golemio/core/dist/helpers/routing/AbstractRouter");
const ioc_1 = require("@golemio/core/dist/output-gateway/ioc");
const Validation_1 = require("@golemio/core/dist/output-gateway/Validation");
const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
const constants_1 = require("../constants");
class V3ParkingRouter extends AbstractRouter_1.AbstractRouter {
constructor() {
super(constants_1.RouteVersion.v3, "parking");
this.allowedAccessDedicatedTo = [
"disabled",
"charging",
"parent",
"delivery",
"customer",
"resident",
"bus",
"designated",
"truck",
"all",
"motorcycle",
"RV",
];
this.allowedParkingPolicyType = Object.values(ParkingPolicyEnum_1.ParkingPolicyEnum);
this.cacheHeaderMiddleware = Di_1.ParkingsContainer.resolve(ioc_1.ContainerToken.CacheHeaderMiddleware);
this.controller = new V3ParkingController_1.V3ParkingController();
this.primarySourceValidator = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.PrimarySourceValidator);
this.initRoutes();
}
initRoutes() {
this.router.get("/", [
(0, express_validator_1.query)("isRestrictedToOpenData").optional().isBoolean().not().isArray(),
(0, express_validator_1.query)("primarySource").optional().custom(this.primarySourceValidator.validate),
(0, express_validator_1.query)("primarySourceId").optional().isString(),
(0, express_validator_1.query)("validFrom").optional().isISO8601().not().isArray(),
(0, express_validator_1.query)("openingHoursValidFrom").optional().isISO8601(),
(0, express_validator_1.query)("openingHoursValidTo").optional().isISO8601(),
(0, express_validator_1.query)("boundingBox")
.optional()
.matches(/^\d+\.?\d*(,\d+\.?\d*){3}$/) // 50.123,14.243,50.017,14.573
.not()
.isArray(),
(0, express_validator_1.query)("accessDedicatedTo").optional().isIn(this.allowedAccessDedicatedTo),
(0, express_validator_1.query)("minutesBefore").optional().isInt({ min: 1 }).not().isArray(),
(0, express_validator_1.query)("updatedSince").optional().isISO8601().not().isArray(),
(0, express_validator_1.query)("parkingPolicy").optional().isIn(this.allowedParkingPolicyType),
(0, express_validator_1.query)("activeOnly").optional().isBoolean().not().isArray(),
], (0, Validation_1.paginationLimitMiddleware)(this.path), Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(5 * 60, 5), this.controller.getAll);
this.router.get("/:id/average-occupancy", [(0, express_validator_1.param)("id").exists().isString(), (0, express_validator_1.query)("isRestrictedToOpenData").optional().isBoolean().not().isArray()], Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(8 * 60 * 60, 60), this.controller.getAverageOccupancy);
this.router.get("/:id", [(0, express_validator_1.param)("id").exists().isString(), (0, express_validator_1.query)("isRestrictedToOpenData").optional().isBoolean().not().isArray()], Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(5 * 60, 5), this.controller.getOne);
}
}
const v3ParkingRouter = new V3ParkingRouter();
exports.v3ParkingRouter = v3ParkingRouter;
//# sourceMappingURL=V3ParkingRouter.js.map