public APIGatewayProxyResponseEvent handlePostRequest()

in ExportTenantData/src/main/java/tenant/export/ApiGatewayHandler.java [42:75]


    public APIGatewayProxyResponseEvent handlePostRequest(final APIGatewayProxyRequestEvent input, final Context context) {
        // we vending the token by extracting the tenant ID from the JWT token contained in
        // the request headers
        TokenVendor tokenVendor = new TokenVendor();
        final AwsCredentialsProvider awsCredentialsProvider =
            tokenVendor.vendTokenJwt(input.getHeaders());

        // we parse the body of the POST request, currently we only accept a 'data' parameter to
        // be written to DynamoDB, anything else will be ignored
        Map<String, String> body;
        try {
            TypeReference<Map<String,String>> typeRef = new TypeReference<Map<String,String>>() {};
            body = mapper.readValue(input.getBody(), typeRef);
        } catch (JsonProcessingException e) {
            logger.error("Error parsing JSON body.", e);
            throw new RuntimeException(createBadRequestResponse(context.getAwsRequestId(),
                "Error parsing JSON body."));
        }

        String tenant = tokenVendor.getTenant();
        logger.info("TENANT ID: " + tenant);

        // TenantProduct class encapsulates writing to DynamoDB using the enhanced DynamoDB
        // client, which allows us to use POJOs
        TenantProduct tenantProduct = new TenantProduct(awsCredentialsProvider, tenant, body.get("data"));
        tenantProduct.save();

        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");

        return new APIGatewayProxyResponseEvent()
            .withHeaders(headers)
            .withStatusCode(201);
    }