From 957219b8af51926c7b7a78f5073645eb879725ce Mon Sep 17 00:00:00 2001 From: Shredder <110225819+EmperorOrokuSaki@users.noreply.github.com> Date: Tue, 25 Apr 2023 22:09:54 +0330 Subject: [PATCH] feat: serverless new mint handler placeholder (#221) * feat: add handler. * fix: make the handler compilable. * feat: parse json --- serverless/.gitignore | 2 + serverless/serverless.yaml | 8 ++++ serverless/src/functions/mints/handler.ts | 45 +++++++++++++++++++++++ serverless/src/functions/mints/index.ts | 13 +++++++ 4 files changed, 68 insertions(+) create mode 100644 serverless/src/functions/mints/handler.ts create mode 100644 serverless/src/functions/mints/index.ts diff --git a/serverless/.gitignore b/serverless/.gitignore index af4cbef..d52362e 100644 --- a/serverless/.gitignore +++ b/serverless/.gitignore @@ -5,6 +5,8 @@ jspm_packages # Serverless directories .serverless +yarn-error.log + # esbuild directories .esbuild diff --git a/serverless/serverless.yaml b/serverless/serverless.yaml index 8e43740..a0904ff 100644 --- a/serverless/serverless.yaml +++ b/serverless/serverless.yaml @@ -36,4 +36,12 @@ functions: - http: path: build method: post + cors: true + + submitMintInfo: + handler: dist/functions/mints/handler.submitMintInfo + events: + - http: + path: mint + method: post cors: true \ No newline at end of file diff --git a/serverless/src/functions/mints/handler.ts b/serverless/src/functions/mints/handler.ts new file mode 100644 index 0000000..b691f31 --- /dev/null +++ b/serverless/src/functions/mints/handler.ts @@ -0,0 +1,45 @@ +import { + APIGatewayProxyResult, + APIGatewayEvent, + ///APIGatewayEventRequestContext, + } from 'aws-lambda'; + import { formatJSONResponse } from '@libs/api-gateway'; + + import { v4 } from 'uuid'; + + export const submitMintInfo = async ( + event: APIGatewayEvent, + ///context: APIGatewayEventRequestContext + ): Promise => { + try { + const id = v4(); + + /**if (!verifyAlchemySig(event.headers.xalchemywork)) { + throw new Error('Invalid sig'); + }**/ + + if (event.body == undefined) { + throw new Error('Undefined data'); + } + + const mintInfo = { + buildId: id, + createdAt: new Date().toISOString(), + body: JSON.parse(event.body), + }; + + // check if we have it in mongo + // if so, trigger verification call + // if not, add to mongo + + return formatJSONResponse({ + mintInfo, + }); + } catch (e) { + return formatJSONResponse({ + status: 500, + message: e, + }); + } + }; + \ No newline at end of file diff --git a/serverless/src/functions/mints/index.ts b/serverless/src/functions/mints/index.ts new file mode 100644 index 0000000..f8d0528 --- /dev/null +++ b/serverless/src/functions/mints/index.ts @@ -0,0 +1,13 @@ +import { handlerPath } from '@libs/handler-resolver'; + +export const newMint = { + handler: `${handlerPath(__dirname)}/handler.newMint`, + events: [ + { + http: { + method: 'post', + path: 'mint', + }, + }, + ], +}; \ No newline at end of file