diff --git a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/FileManagementController.cs b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/FileManagementController.cs index 4e58eb1..dd03806 100644 --- a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/FileManagementController.cs +++ b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/FileManagementController.cs @@ -14,16 +14,14 @@ public class FileManagementController : Controller private readonly IFileMetadataService _metadataService; private readonly IImageMetadataService _imageService; private readonly IImageLookupService _imageLookupService; - private readonly IModerationService _moderationService; private readonly ILogger _logger; - public FileManagementController (IStorageService storage, IOptions options, IFileMetadataService metadataService, IImageMetadataService imageService, ILogger logger, IImageLookupService imageLookupService, IModerationService moderationService) + public FileManagementController (IStorageService storage, IOptions options, IFileMetadataService metadataService, IImageMetadataService imageService, ILogger logger, IImageLookupService imageLookupService) { _storage = storage; _configuration = options.Value; _metadataService = metadataService; _imageService = imageService; _imageLookupService = imageLookupService; - _moderationService = moderationService; _logger = logger; } // We need to store the files in S3 and then push the metadata into a Dynamo DB Table. @@ -63,6 +61,8 @@ public async Task Upload(IFormFile file) string s3KeyName = _storage.SaveFile(file); _logger.Log(LogLevel.Information, "Saved file {0} to S3 bucket as {1}", file.FileName, s3KeyName ); + IModerationService _moderationService = new RekognitionModerationService (_configuration, _logger); + var moderationResults = await _moderationService.IsContentAllowed(s3KeyName); if (moderationResults.ImageAllowed) { diff --git a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/RekognitionController.cs b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/RekognitionController.cs index 666709d..787152b 100644 --- a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/RekognitionController.cs +++ b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Controllers/RekognitionController.cs @@ -9,14 +9,14 @@ namespace MediaLibrary.Controllers { public class RekognitionController : Controller { - + private readonly AwsSettings _configuration; private readonly IFileMetadataService _metadataService; private readonly IImageMetadataService _imageMetadataService; private readonly IImageLookupService _imageLookupService; private readonly ILogger _logger; - public RekognitionController (IOptions options, IFileMetadataService metadataService, IImageMetadataService imageMetadataService, ILogger logger, IImageLookupService imageLookupService) + public RekognitionController(IOptions options, IFileMetadataService metadataService, IImageMetadataService imageMetadataService, ILogger logger, IImageLookupService imageLookupService) { _configuration = options.Value; _metadataService = metadataService; @@ -58,7 +58,7 @@ public async Task ViewItem(string item) } } - public async Task Process (string item) + public async Task Process(string item) { _logger.Log(LogLevel.Information, "RekognitionController::Process", null); AWSXRayRecorder.Instance.BeginSubsegment("RekognitionController::Process - Getting File Metadata"); @@ -93,7 +93,7 @@ public async Task Process (string item) }; var labels = await client.DetectLabelsAsync(detectLabelsRequest); - + // Store the new data in a new dynamo DB Table foreach (var label in labels.Labels) { @@ -111,7 +111,7 @@ public async Task Process (string item) AWSXRayRecorder.Instance.EndSubsegment(); } // Sore individual indexes - return View (viewModel); + return View(viewModel); } [HttpPost] public async Task Process(ImageProcessingModel model, IFormCollection collection) @@ -162,7 +162,7 @@ public async Task Process(ImageProcessingModel model, IFormCollec return RedirectToAction("Index", "FileManagement"); } - public async Task Search (string filter) + public async Task Search(string filter) { var fullLabelData = await _imageLookupService.GetLabelData(); ImageLookupDataModel imageLookupList; @@ -189,7 +189,7 @@ where x.Label.ToLower() == filter.ToLower() { viewModel.CurrentValue = "---Choose Label---"; } - + viewModel.Labels = new List(); foreach (var item in fullLabelData) @@ -200,9 +200,9 @@ where x.Label.ToLower() == filter.ToLower() } } - + return View(viewModel); } } -} +} \ No newline at end of file diff --git a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/MediaLibrary.csproj b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/MediaLibrary.csproj index f0a861f..40a3c9c 100644 --- a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/MediaLibrary.csproj +++ b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/MediaLibrary.csproj @@ -10,17 +10,19 @@ - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Program.cs b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Program.cs index 0b7ea74..4b7f3be 100644 --- a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Program.cs +++ b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Program.cs @@ -15,7 +15,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); + builder.Services.Configure(builder.Configuration.GetSection("AWSConfig")); diff --git a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Services/RekognitionModerationService.cs b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Services/RekognitionModerationService.cs index 7e49706..ae73b0d 100644 --- a/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Services/RekognitionModerationService.cs +++ b/SampleApplications/2022/MediaCatalog/MediaLibrary6.0/MediaLibrary/Services/RekognitionModerationService.cs @@ -6,20 +6,23 @@ namespace MediaLibrary.Services public class RekognitionModerationService : IModerationService { private readonly AwsSettings _configuration; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RekognitionModerationService (IOptions options, ILogger logger) + + + public RekognitionModerationService(AwsSettings options, ILogger logger) { - _configuration = options.Value; + _configuration = options; _logger = logger; } + public async Task IsContentAllowed(string objectLocation) { Amazon.Rekognition.AmazonRekognitionClient client = new Amazon.Rekognition.AmazonRekognitionClient(); var results = await client.DetectModerationLabelsAsync(new Amazon.Rekognition.Model.DetectModerationLabelsRequest() { - MinConfidence = 75F, + MinConfidence = 50F, Image = new Amazon.Rekognition.Model.Image() { S3Object = new Amazon.Rekognition.Model.S3Object()