From 983bb58a796437c7346ba3c35efe92b6ab1deddf Mon Sep 17 00:00:00 2001 From: Cristiano Tofani Date: Thu, 16 May 2024 15:45:25 +0200 Subject: [PATCH 1/3] [IOPLT-517] Trial System router --- package.json | 2 ++ src/server.ts | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6ef7c10f..9e71d832 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "api_pn": "https://raw.githubusercontent.com/pagopa/io-backend/v13.32.1-RELEASE/api_pn.yaml", "api_idpay": "https://raw.githubusercontent.com/pagopa/cstar-infrastructure/v6.5.0/src/domains/idpay-app/api/idpay_appio_full/openapi.appio.full.yml", "api_fast_login": "https://raw.githubusercontent.com/pagopa/io-backend/v13.32.1-RELEASE/openapi/generated/api_fast_login.yaml", + "api_trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/features/add-openapi-trial-service/api_trial_system.yaml", "api_pagopa_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/8b8a5b0c3ebc007d9b8f1a8dc4ae9b88b63b5794/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl", "api_pagopa_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/8b8a5b0c3ebc007d9b8f1a8dc4ae9b88b63b5794/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl", "api_services": "https://raw.githubusercontent.com/pagopa/io-backend/master/api_services_app_backend.yaml", @@ -55,6 +56,7 @@ "generate:pn-definitions": "rimraf generated/definitions/pn && mkdir -p generated/definitions/pn && gen-api-models --api-spec $npm_package_api_pn --out-dir ./generated/definitions/pn --no-strict --request-types --response-decoders", "generate:idpay-definitions": "rimraf generated/definitions/idpay && mkdir -p generated/definitions/idpay && gen-api-models --api-spec $npm_package_api_idpay --out-dir ./generated/definitions/idpay --no-strict", "generate:fast-login-definitions": "rimraf generated/definitions/fast_login && mkdir -p generated/definitions/fast_login && gen-api-models --api-spec $npm_package_api_fast_login --out-dir ./generated/definitions/fast_login --no-strict --request-types --response-decoders", + "generate:trial-system-definitions": "rimraf generated/definitions/trial_systwem && mkdir -p generated/definitions/trial_systwem && gen-api-models --api-spec $npm_package_api_trial_system --out-dir ./generated/definitions/trial_systwem --no-strict --response-decoders --request-types", "generate:pagopa": "npm-run-all generate:pagopa-walletv2-definitions generate:pagopa-privative-configuration-definitions generate:pagopa-cobadge-configuration-definitions generate:pagopa-walletv3-definitions generate:pagopa-ecommerce-definitions", "generate:services-definitions": "rimraf generated/definitions/services && mkdir -p generated/definitions/services && gen-api-models --api-spec $npm_package_api_services --out-dir ./generated/definitions/services --no-strict", "generate": "npm-run-all generate:*" diff --git a/src/server.ts b/src/server.ts index 8bffa288..edbc6110 100644 --- a/src/server.ts +++ b/src/server.ts @@ -35,6 +35,7 @@ import { delayer } from "./utils/delay_middleware"; import { walletRouter as newWalletRouter } from "./features/wallet"; import { serviceRouter as newServiceRouter } from "./features/services"; import { dashboardHomeRouter } from "./routers/configHomeDashboard/configHomeDashboard"; +import { trialSystemRouter } from "./features/trialSystem/routers"; // create express server const app: Application = express(); @@ -82,7 +83,8 @@ app.use(fastLoginMiddleware); lollipopRouter, fastLoginRouter, newWalletRouter, - newServiceRouter + newServiceRouter, + trialSystemRouter ].forEach(r => app.use(r)); export default app; From 7b7595b5def7624f4fbf6fba20850ce2e95e5325 Mon Sep 17 00:00:00 2001 From: Cristiano Tofani Date: Thu, 16 May 2024 15:45:34 +0200 Subject: [PATCH 2/3] [IOPLT-517] Trial System router --- src/features/trialSystem/routers/index.ts | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/features/trialSystem/routers/index.ts diff --git a/src/features/trialSystem/routers/index.ts b/src/features/trialSystem/routers/index.ts new file mode 100644 index 00000000..a08cd98e --- /dev/null +++ b/src/features/trialSystem/routers/index.ts @@ -0,0 +1,56 @@ +/* eslint-disable functional/immutable-data */ +import { Router } from "express"; +import { addApiV1Prefix } from "../../../utils/strings"; +import { addHandler } from "../../../payloads/response"; +import { Subscription } from "../../../../generated/definitions/trial_systwem/Subscription"; +import { TrialId } from "../../../../generated/definitions/trial_systwem/TrialId"; +import { SubscriptionStateEnum } from "../../../../generated/definitions/trial_systwem/SubscriptionState"; + +export const trialSystemRouter = Router(); + +const addPrefix = (path: string) => addApiV1Prefix(`/trials${path}`); + +const trials: Record = {}; + +addHandler( + trialSystemRouter, + "post", + addPrefix("/:trialId/subscriptions"), + (req, res) => { + const currentTrial = trials[req.params.trialId as TrialId]; + + if (currentTrial) { + return res.status(200).json({ + ...currentTrial, + state: SubscriptionStateEnum.SUBSCRIBED + }); + } + + trials[req.params.trialId as TrialId] = { + trialId: req.params.trialId as TrialId, + state: SubscriptionStateEnum.SUBSCRIBED, + createdAt: new Date() + }; + + res.status(201).json({ + trialId: req.params.trialId as TrialId, + state: SubscriptionStateEnum.SUBSCRIBED, + createdAt: new Date() + } as Subscription); + } +); + +addHandler( + trialSystemRouter, + "get", + addPrefix("/:trialId/subscriptions"), + (req, res) => { + const currentTrial = trials[req.params.trialId as TrialId]; + + if (currentTrial) { + return res.status(200).json(currentTrial); + } + + res.sendStatus(404); + } +); From 4f69b6e630f30289d006d5051ac0595073700424 Mon Sep 17 00:00:00 2001 From: Cristiano Tofani Date: Wed, 26 Jun 2024 16:37:33 +0200 Subject: [PATCH 3/3] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8119ef67..f5119670 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "api_pagopa_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/8b8a5b0c3ebc007d9b8f1a8dc4ae9b88b63b5794/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl", "api_pagopa_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/8b8a5b0c3ebc007d9b8f1a8dc4ae9b88b63b5794/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl", "api_fast_login": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/openapi/generated/api_fast_login.yaml", - "api_trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/features/add-openapi-trial-service/api_trial_system.yaml", + "api_trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/api_trial_system.yaml", "api_pagopa_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/pay-wallet-app/api/io-payment-wallet/v1/_openapi.json.tpl", "api_pagopa_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/ecommerce-app/api/ecommerce-io/v2/_openapi.json.tpl", "api_pagopa_biz_events": "https://raw.githubusercontent.com/pagopa/pagopa-biz-events-service/0.1.37/openapi/openapi_io_patch.json",