Refactor to use custom data from request

This commit is contained in:
Jonatan Witoszek 2023-08-18 16:04:13 +02:00
parent 9fad0dcd24
commit 1d70b9ea3f
No known key found for this signature in database
GPG key ID: D35056EA9CCE8472

167
main.ts
View file

@ -24,6 +24,12 @@ import * as log from "log/mod.ts";
const apl = new DenoAPL(); const apl = new DenoAPL();
interface TransactionRequestResponse {
pspReference: string;
result: string;
amount: string;
}
interface ActionRequestResponse { interface ActionRequestResponse {
pspReference: string; pspReference: string;
event?: { event?: {
@ -35,19 +41,95 @@ interface ActionRequestResponse {
}; };
} }
function getResponse(type: string, amount: string): ActionRequestResponse { async function getTransactionResponse(
// Uncomment for reporting without status update req: Request,
// return { logger: log.Logger
// pspReference: `${type}-1234`, ): Promise<Response> {
// } const json = await req.json();
return { const amount = json.action.amount;
pspReference: `${type}-1234`, const action = json.action.actionType ?? "CHARGE";
const saleorApiUrl = req.headers.get(SALEOR_API_URL_HEADER);
const data = json?.data;
logger.info("Request", {
amount,
action,
saleorApiUrl,
data,
});
logger.debug("Request details", {
headers: req.headers,
body: req.body,
});
if (!amount || !action || !saleorApiUrl) {
logger.error("Missing parameter");
return Response.BadRequest({
message: "Missing params",
});
}
return Response.OK({
pspReference: "initialize-test",
result: `${action}_SUCCESS`,
amount,
...data,
} satisfies TransactionRequestResponse);
}
async function getActionResponse(
req: Request,
logger: log.Logger
): Promise<Response> {
const json = await req.json();
const amount = json.action.amount;
const action = json.action.actionType;
const saleorApiUrl = req.headers.get(SALEOR_API_URL_HEADER);
const data = json.data;
logger.info("Transaction action request", {
amount,
action,
saleorApiUrl,
data,
});
logger.debug("Request details", {
headers: req.headers,
body: req.body,
});
if (!action) {
logger.error("Missing action in request");
return Response.BadRequest({
event: { event: {
type, message: "Missing action",
},
});
}
if (!amount || !saleorApiUrl) {
logger.error("Missing amount or saleorApiUrl");
return Response.BadRequest({
pspReference: `${action}-1234`,
event: {
type: `${action}_FAILURE`,
message: "Missing params",
},
});
}
return Response.OK({
pspReference: `${action}-1234`,
...data,
event: {
type: `${action}_SUCCESS`,
amount, amount,
message: "Example created by dummy server", message: "Example created by dummy server",
...data?.event,
}, },
}; } satisfies ActionRequestResponse);
} }
function getUrl(req: Request) { function getUrl(req: Request) {
@ -179,9 +261,16 @@ const routes = [
}); });
}), }),
POST("/gateway-initialize", async (req: Request) => { POST("/gateway-initialize", async (req: Request) => {
const logger = log.getLogger("gateway-initialize");
const json = await req.json(); const json = await req.json();
console.log("/gateway-initialize - json", json);
console.log("/gateway-initialize - headers", req.headers); logger.info("Request", json);
logger.debug("Request details", { body: req.body, headers: req.headers });
if (json?.data) {
return json.data;
}
return Response.OK({ return Response.OK({
data: { data: {
some: "data", some: "data",
@ -189,53 +278,37 @@ const routes = [
}); });
}), }),
POST("/transaction-initialize", async (req: Request) => { POST("/transaction-initialize", async (req: Request) => {
const json = await req.json(); const logger = log.getLogger("transaction-initialize");
console.log("transaction initialize", json);
console.log("headers", req.headers); return await getTransactionResponse(req, logger);
const amount = json.action.amount;
const action = json.action.actionType ?? "CHARGE";
return Response.OK({
pspReference: "initialize-test",
result: json?.data?.final
? `${action}_SUCCESS`
: `${action}_ACTION_REQUIRED`,
amount,
});
}), }),
POST("/transaction-process", async (req: Request) => { POST("/transaction-process", async (req: Request) => {
const json = await req.json(); const logger = log.getLogger("transaction-process");
console.log("transaction process", json);
console.log("headers", req.headers); return await getTransactionResponse(req, logger);
const amount = json.action.amount;
const action = json.action.actionType ?? "CHARGE";
return Response.OK({
pspReference: "initialize-test",
result: json?.data?.final ? `${action}_SUCCESS` : `${action}_REQUEST`,
amount,
});
}), }),
POST("/transaction-charge-requested", async (req: Request) => { POST("/transaction-charge-requested", async (req: Request) => {
const json = await req.json(); const logger = log.getLogger("transaction-charge-requested");
console.log("charge request", json);
console.log("headers", req.headers); return await getActionResponse(req, logger);
const amount = json.action.amount;
return Response.OK(getResponse("CHARGE_SUCCESS", amount));
}), }),
POST("/transaction-refund-requested", async (req) => { POST("/transaction-refund-requested", async (req) => {
const json = await req.json(); const logger = log.getLogger("transaction-refund-requested");
console.log("refund request", json);
const amount = json.action.amount; return await getActionResponse(req, logger);
return Response.OK(getResponse("REFUND_SUCCESS", amount));
}), }),
POST("/transaction-cancelation-requested", async (req) => { POST("/transaction-cancelation-requested", async (req) => {
const json = await req.json(); const logger = log.getLogger("transaction-cancelation-requested");
console.log("cancel request", json);
const amount = json.action.amount; return await getActionResponse(req, logger);
return Response.OK(getResponse("CANCEL_SUCCESS", amount));
}), }),
POST("/transaction-action-request", async (req) => { POST("/transaction-action-request", async (req) => {
const logger = log.getLogger("transaction-action-request");
const json = await req.json(); const json = await req.json();
console.log("received old async event", json); logger.info("Request", json);
logger.debug("Request details", { body: req.body, headers: req.headers });
return Response.OK("Accepted"); return Response.OK("Accepted");
}), }),
]; ];