public async Task FunctionHandler()

in Application/StepFunctions/extract-image-metadata/Function.cs [31:65]


        public async Task<ImageMetadata> FunctionHandler(ExecutionInput state, ILambdaContext context)
        {
            var logger = new ImageRecognitionLogger(state, context);

            var srcKey = WebUtility.UrlDecode(state.SourceKey);
            var tmpPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(srcKey));
            try
            {
                var metadata = new ImageMetadata();
                using (var response = await S3Client.GetObjectAsync(state.Bucket, srcKey))
                {
                    using (var sourceImage = Image.Load(response.ResponseStream, out var format))
                    {
                        metadata.OriginalImagePixelCount = sourceImage.Width * sourceImage.Height;

                        metadata.Width = sourceImage.Width;

                        metadata.Height = sourceImage.Height;

                        metadata.ExifProfile = sourceImage.Metadata.ExifProfile;

                        metadata.Format = format.Name;
                    }
                }

                await logger.WriteMessageAsync(new MessageEvent {Message = "Photo metadata extracted succesfully"},
                    ImageRecognitionLogger.Target.All);

                return metadata;
            }
            finally
            {
                if (File.Exists(tmpPath)) File.Delete(tmpPath);
            }
        }