Example #1
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            DetectModerationLabelsResponse response = new DetectModerationLabelsResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("ModerationLabels", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <ModerationLabel, ModerationLabelUnmarshaller>(ModerationLabelUnmarshaller.Instance);
                    response.ModerationLabels = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("ModerationModelVersion", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.ModerationModelVersion = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Example #2
0
    public static void Example()
    {
        String photo  = "input.jpg";
        String bucket = "bucket";

        AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

        DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
        {
            Image = new Image()
            {
                S3Object = new S3Object()
                {
                    Name   = photo,
                    Bucket = bucket
                },
            },
            MinConfidence = 60F
        };

        try
        {
            DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);
            Console.WriteLine("Detected labels for " + photo);
            foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
            {
                Console.WriteLine("Label: {0}\n Confidence: {1}\n Parent: {2}",
                                  label.Name, label.Confidence, label.ParentName);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
Example #3
0
        private void btnLoad_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();

            op.Title  = "Select a picture";
            op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
                        "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
                        "Portable Network Graphic (*.png)|*.png";
            if (op.ShowDialog() == true)
            {
                imgPhoto.Source = new BitmapImage(new Uri(op.FileName));
            }

            String photo = imgPhoto.Source.ToString().Substring(8);

            Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image();
            try
            {
                using (FileStream fs = new FileStream(photo, FileMode.Open, FileAccess.Read))
                {
                    byte[] data = null;
                    data = new byte[fs.Length];
                    fs.Read(data, 0, (int)fs.Length);
                    image.Bytes = new MemoryStream(data);
                }
            }
            catch (Exception)
            {
                return;
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
            {
                Image         = image,
                MinConfidence = 60F
            };

            try
            {
                DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);
                List <Moderation> items = new List <Moderation>();

                foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
                {
                    items.Add(new Moderation()
                    {
                        Name = label.Name, Confidence = label.Confidence, ParentName = label.ParentName
                    });
                }
                lvModeration.ItemsSource = items;
            }
            catch (Exception)
            {
                Console.WriteLine("Error!!!");
                return;
            }
        }
Example #4
0
        public async Task OnPostAsync()
        {
            using (var fileStream = Upload.OpenReadStream())
            {
                using (var ms = new MemoryStream())
                {
                    fileStream.CopyTo(ms);

                    Result = await rekognition.DetectModerationLabelsAsync(new DetectModerationLabelsRequest
                    {
                        Image = new Image
                        {
                            Bytes = ms,
                        }
                    });
                }
            }
        }
Example #5
0
        public DetectModerationLabelsResponse ImageModeration()
        {
            Image image = new Image();

            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                byte[] data = null;
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
                image.Bytes = new MemoryStream(data);
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
            {
                Image         = image,
                MinConfidence = 60F
            };

            DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);

            return(detectModerationLabelsResponse);
        }
        private void OnImageModeration(object sender, RoutedEventArgs e)
        {
            if (isChoose)
            {
                DetectModerationLabelsResponse response = pbMyPictureBox.ImageModeration();
                string result = "";

                foreach (ModerationLabel label in response.ModerationLabels)
                {
                    result += $"Label: {label.Name}\n\tConfidence: {Math.Round(label.Confidence, 2)}%\n\n";
                }

                if (response.ModerationLabels.Count == 0)
                {
                    result = "Image is Safe";
                }

                txtResult.Text = result;
            }
            else
            {
                txtResult.Text = "Error: File Not Choose";
            }
        }
Example #7
0
        private async Task <Boolean> ReadObjectDataAsync(String bucketName, String keyName, float confidence, String pendingimagesbucket, String quarantinedimagesbucket, String templatesBucket)
        {
            try
            {
                GetObjectRequest request = new GetObjectRequest
                {
                    BucketName = bucketName,
                    Key        = keyName
                };
                using (GetObjectResponse response = await s3EmailsClient.GetObjectAsync(request))
                {
                    MimeMessage           message         = MimeMessage.Load(response.ResponseStream);
                    MailAddressCollection mailAddresses   = (MailAddressCollection)message.From;
                    MailAddressCollection sendToAddresses = (MailAddressCollection)message.To;
                    emailTo = mailAddresses[0].Address;
                    if (sendToAddresses[0].ToString().ToLower().Contains("northnorthants"))
                    {
                        west = false;
                        Console.WriteLine("Processing email for North Northants from : " + emailTo);
                    }
                    else
                    {
                        Console.WriteLine("Processing email for West Northants from  : " + emailTo);
                    }
                    subject = message.Subject;
                    name    = message.From[0].Name;
                    int numOfAttachments = 0;
                    imageCheckPass = true;
                    foreach (MimeEntity attachment in message.Attachments)
                    {
                        if (!(attachment is MessagePart))
                        {
                            numOfAttachments++;
                            MimePart part     = (MimePart)attachment;
                            String   fileName = part.FileName;
                            if (!fileName.ToLower().Contains("pdf"))
                            {
                                try
                                {
                                    Stream objectStream = new MemoryStream();
                                    part.Content.DecodeTo(objectStream);
                                    byte[] attachmentArray = new byte[objectStream.Length];

                                    long attachmentLength = objectStream.Length;


                                    using (var imageStream = part.Content.Open())
                                    {
                                        PutObjectRequest putRequest = new PutObjectRequest()
                                        {
                                            InputStream = imageStream,
                                            BucketName  = pendingimagesbucket,
                                            Key         = fileName,
                                        };
                                        putRequest.Headers.ContentLength = attachmentLength;
                                        await s3Client.PutObjectAsync(putRequest);

                                        Console.WriteLine("Written to S3 : {0}", fileName);
                                    }
                                }
                                catch (Exception error)
                                {
                                    Console.WriteLine("ERROR : Processing Image : '{0}' ", error.Message);
                                    Console.WriteLine(error.StackTrace);
                                }

                                AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

                                DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
                                {
                                    Image = new Image()
                                    {
                                        S3Object = new Amazon.Rekognition.Model.S3Object()
                                        {
                                            Name   = fileName,
                                            Bucket = pendingimagesbucket
                                        },
                                    },
                                    MinConfidence = 60F
                                };

                                try
                                {
                                    DetectModerationLabelsResponse detectModerationLabelsResponse = await rekognitionClient.DetectModerationLabelsAsync(detectModerationLabelsRequest);

                                    Console.WriteLine("Detected labels");
                                    foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
                                    {
                                        if (!String.IsNullOrEmpty(label.ParentName))
                                        {
                                            Console.WriteLine("Found - Label: {0}\n Confidence: {1}\n Parent: {2}",
                                                              label.Name, label.Confidence, label.ParentName);
                                            if (label.Confidence > confidence)
                                            {
                                                Console.WriteLine("Rejected - Label: {0}\n Confidence: {1}", label.Name, label.Confidence);
                                                imageCheckPass = false;
                                            }
                                        }
                                    }

                                    try
                                    {
                                        if (imageCheckPass)
                                        {
                                            DeleteObjectRequest deleteRequest = new DeleteObjectRequest
                                            {
                                                BucketName = pendingimagesbucket,
                                                Key        = fileName
                                            };
                                            await s3Client.DeleteObjectAsync(deleteRequest);
                                        }
                                        else
                                        {
                                            Console.WriteLine("Image Rejection Started");
                                            try
                                            {
                                                Console.WriteLine("Clearing : Deleting " + fileName + " from : " + quarantinedimagesbucket);
                                                DeleteObjectRequest clearRequest = new DeleteObjectRequest
                                                {
                                                    BucketName = quarantinedimagesbucket,
                                                    Key        = fileName
                                                };
                                                await s3Client.DeleteObjectAsync(clearRequest);
                                            }
                                            catch (Exception) {}
                                            Console.WriteLine("Quarantining : Copying " + fileName + " to : " + quarantinedimagesbucket);
                                            CopyObjectRequest copyRequest = new CopyObjectRequest
                                            {
                                                SourceBucket      = pendingimagesbucket,
                                                SourceKey         = fileName,
                                                DestinationBucket = quarantinedimagesbucket,
                                                DestinationKey    = fileName
                                            };
                                            await s3Client.CopyObjectAsync(copyRequest);

                                            Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket);
                                            DeleteObjectRequest deleteRequest = new DeleteObjectRequest
                                            {
                                                BucketName = pendingimagesbucket,
                                                Key        = fileName
                                            };
                                            await s3Client.DeleteObjectAsync(deleteRequest);

                                            Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket);
                                            Console.WriteLine("Image Rejection Ended");
                                        }
                                    }
                                    catch (Exception error)
                                    {
                                        Console.WriteLine("ERROR : Moving/Deleting Image : " + error.Message);
                                        Console.WriteLine(error.StackTrace);
                                    }
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e.Message);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ignoring attachment");
                        }
                    }
                    Console.WriteLine("Num of attachments : {0}", numOfAttachments);


                    emailBody = message.HtmlBody;
                    for (int currentHeader = 0; currentHeader < message.Headers.Count; currentHeader++)
                    {
                        if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Spam-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS"))
                        {
                            spamCheckPass = true;
                        }
                        if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Virus-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS"))
                        {
                            virusCheckPass = true;
                        }
                    }
                    if (spamCheckPass && virusCheckPass && imageCheckPass)
                    {
                        emailPassedChecks = true;
                    }
                    else
                    {
                        emailBody = "Failed text";
                        try
                        {
                            GetObjectRequest objectRequest = new GetObjectRequest
                            {
                                BucketName = templatesBucket,
                                Key        = "email-unsafe-rejection.txt"
                            };
                            using (GetObjectResponse objectResponse = await s3TemplatesClient.GetObjectAsync(objectRequest))
                                using (Stream responseStream = objectResponse.ResponseStream)
                                    using (StreamReader reader = new StreamReader(responseStream))
                                    {
                                        emailBody = reader.ReadToEnd();
                                    }
                            if (!virusCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "a virus");
                            }
                            else if (!spamCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "spam");
                            }
                            else if (!imageCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "inappropriate content in attachments");
                            }
                            else
                            {
                                emailBody = emailBody.Replace("AAA", "unknown");
                            }
                            emailBody = emailBody.Replace("DDD", name);
                        }
                        catch (AmazonS3Exception e)
                        {
                            Console.WriteLine("ERROR : Reading Email : '{0}' when reading rejection template", e.Message);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("ERROR : An Unknown encountered : '{0}' when reading rejection template", e.Message);
                        }
                    }
                }
            }
            catch (AmazonS3Exception error)
            {
                Console.WriteLine("ERROR : Reading Email : '{0}' when reading email", error.Message);
                Console.WriteLine(error.StackTrace);
            }
            catch (Exception error)
            {
                Console.WriteLine("ERROR : An Unknown encountered : {0}' when reading email", error.Message);
                Console.WriteLine(error.StackTrace);
            }
            return(emailPassedChecks);
        }