Skip to content

Commit

Permalink
Merge pull request #378 from pagopa/IOPLT-517-trial-system-api
Browse files Browse the repository at this point in the history
[IOPLT-517] trial system API
  • Loading branch information
CrisTofani authored Jun 27, 2024
2 parents 85d3b9d + 4f69b6e commit f4fdc90
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
"api_fci": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/api_io_sign.yaml",
"api_pn": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.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_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/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",
Expand Down Expand Up @@ -59,6 +63,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:pagopa-transactions-definitions generate:pagopa-platform-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:*"
Expand Down
56 changes: 56 additions & 0 deletions src/features/trialSystem/routers/index.ts
Original file line number Diff line number Diff line change
@@ -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<TrialId, Subscription> = {};

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);
}
);
4 changes: 3 additions & 1 deletion src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import { delayer } from "./utils/delay_middleware";
import { walletRouter as newWalletRouter } from "./features/payments";
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();
Expand Down Expand Up @@ -82,7 +83,8 @@ app.use(fastLoginMiddleware);
lollipopRouter,
fastLoginRouter,
newWalletRouter,
newServiceRouter
newServiceRouter,
trialSystemRouter
].forEach(r => app.use(r));

export default app;

0 comments on commit f4fdc90

Please sign in to comment.