public async Task <APIGatewayProxyResponse> Handle(APIGatewayProxyRequest request)
        {
            if (!ValidateRequest(request, out var errorResponse))
            {
                return(errorResponse);
            }

            var model      = BuildModelFromRequest(request.Body);
            var photograph = BuildPhotographyFromModel(model);

            var photographTable = Table.LoadTable(_dynamoDb, TableNames.Photograph);
            await photographTable.PutItemAsync(PhotographSerialization.ToDocument(photograph));

            await _sns.PublishAsync(TopicArns.ImageProcessor, JsonConvert.SerializeObject(new ImageProcessorMessage {
                PhotographId = photograph.Id, Image = photograph.Images.Single()
            }));

            return(BuildResponseFromModel(photograph));
        }
Ejemplo n.º 2
0
        public async Task <APIGatewayProxyResponse> Handle(APIGatewayProxyRequest request)
        {
            var idStr = request.PathParameters["id"];

            if (!Guid.TryParse(idStr, out var id))
            {
                return(Response.CreateError(HttpStatusCode.BadRequest, "Invalid photograph id"));
            }

            var photographTable = Table.LoadTable(_dynamoDb, TableNames.Photograph);
            var document        = await photographTable.GetItemAsync(id);

            if (document == null)
            {
                return(Response.CreateError(HttpStatusCode.NotFound, "No photograph with the requested id was found"));
            }

            var model = PhotographSerialization.FromDocument(document);

            return(BuildResponseFromModel(model));
        }
        public async Task <APIGatewayProxyResponse> Handle(APIGatewayProxyRequest request)
        {
            if (!ValidateRequest(request, out var errorResponse))
            {
                return(errorResponse);
            }

            var idStr = request.PathParameters["id"];

            if (!Guid.TryParse(idStr, out var id))
            {
                return(Response.CreateError(HttpStatusCode.BadRequest, "Invalid photograph id"));
            }

            var model          = BuildModelFromRequest(request.Body);
            var updateDocument = BuildDocumentFromModel(model);

            var photographTable = Table.LoadTable(_dynamoDb, TableNames.Photograph);
            var document        = await photographTable.UpdateItemAsync(updateDocument, id, new UpdateItemOperationConfig { ReturnValues = ReturnValues.AllNewAttributes });

            var photograph = PhotographSerialization.FromDocument(document);

            return(BuildResponseFromModel(photograph));
        }