public async Task FunctionHandler()

in Application/StepFunctions/store-image-metadata/Function.cs [40:83]


        public async Task FunctionHandler(InputEvent input, ILambdaContext context)
        {
            var logger = new ImageRecognitionLogger(input, context);

            var thumbnail = JsonSerializer.Deserialize<Thumbnail>(JsonSerializer.Serialize(input.ParallelResults[1]));

            var labels = JsonSerializer.Deserialize<List<Label>>(JsonSerializer.Serialize(input.ParallelResults[0]));

            var photoUpdate = new Photo
            {
                PhotoId = WebUtility.UrlDecode(input.PhotoId),
                ProcessingStatus = ProcessingStatus.Succeeded,
                FullSize = new PhotoImage
                {
                    Key = WebUtility.UrlDecode(input.SourceKey),
                    Width = input.ExtractedMetadata?.Dimensions?.Width,
                    Height = input.ExtractedMetadata?.Dimensions?.Height
                },
                Format = input.ExtractedMetadata?.Format,
                ExifMake = input.ExtractedMetadata?.ExifMake,
                ExifModel = input.ExtractedMetadata?.ExifModel,
                Thumbnail = new PhotoImage
                {
                    Key = WebUtility.UrlDecode(thumbnail?.s3key),
                    Width = thumbnail?.width,
                    Height = thumbnail?.height
                },
                ObjectDetected = labels.Select(l => l.Name).ToArray(),
                GeoLocation = input.ExtractedMetadata?.Geo,
                UpdatedDate = DateTime.UtcNow
            };

            // update photo table.
            await _ddbContext.SaveAsync(photoUpdate).ConfigureAwait(false);

            var data = JsonSerializer.Serialize(photoUpdate);

            await logger.WriteMessageAsync(
                new MessageEvent
                    {Message = "Photo recognition metadata stored succesfully", Data = data, CompleteEvent = true},
                ImageRecognitionLogger.Target.All);

            Console.WriteLine(data);
        }