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