private void SendMessage(AwsClientDetails clientDetails)
 {
     using (var helper = new SQSHelper(clientDetails))
     {
         MessageId = helper.SendMessage(MessageBody, QueueUrl);
         Log.LogMessage(MessageImportance.Normal, "Sent message to Queue {0}", QueueUrl);
     }
 }
 private void GrantRights(AwsClientDetails clientDetails)
 {
     using (var helper = new SQSHelper(clientDetails))
     {
         helper.GrantSendMessageRights(QueueUrl, SourceArn);
         Log.LogMessage(MessageImportance.Normal, "Granted rights for source {0} to SendMessage to SQS at {1}", SourceArn, QueueUrl);
     }
 }
 private void DeleteQueue(AwsClientDetails clientDetails)
 {
     using (var helper = new SQSHelper(clientDetails))
     {
         helper.DeleteQueue(QueueUrl);
         Log.LogMessage(MessageImportance.Normal, "Deleted SQS Queue at {0}", QueueUrl);
     }
 }
        private void DeleteMessage(AwsClientDetails clientDetails)
        {
            using (var helper = new SQSHelper(clientDetails))
            {
                helper.DeleteMessage(QueueUrl, ReceiptHandle);

                Log.LogMessage(MessageImportance.Normal, "Deleted message {0} from queue {1}", ReceiptHandle, QueueUrl);
            }
        }
        public void DeleteQueue_Should_DeleteQueue()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            // Qreate a queue to delete.
            string queueUrl = helper.CreateQueue("TestQ");

            helper.DeleteQueue(queueUrl);
        }
        public void CreateQueueTwice_Should_Succeed()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            string url1 = helper.CreateQueue("TestQ2");
            string url2 = helper.CreateQueue("TestQ2");

            Assert.AreEqual(url1, url2, "Url's should match");
        }
        public void CreateQueue_Should_CreateQueue()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            string queueUrl = helper.CreateQueue("TestQ");

            System.Diagnostics.Debug.WriteLine(queueUrl, "queueUrl:");

            Assert.IsNotEmpty(queueUrl);
        }
        public void ReceiveMessage_Should_ReceiveMessageAndNotRemoveIt()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            string queueUrl = helper.CreateQueue("TestQ");

            // Add a message to the queue to ensure that their is one and wait for 2 seconds to allow
            // the message to propogate.
            // Add the time on to ensure the correct message is received.
            string expectedMessage = "Sample test message " + DateTime.Now.ToLongTimeString();
            helper.SendMessage(expectedMessage, queueUrl);

            // Messages can be very slow to appear on the queue.
            Thread.Sleep(60000);

            // Get the sent message.
            Amazon.SQS.Model.Message message = helper.ReceiveMessage(queueUrl);
            Assert.IsNotNull(message, "No messages");

            try
            {
                Assert.AreEqual(expectedMessage, message.Body, "Expected message body first time");

                // Ensure that we can get the message a second time.
                Amazon.SQS.Model.Message message2 = helper.ReceiveMessage(queueUrl);
                Assert.IsNotNull(message2, "Message should not have been removed.");
                Assert.AreEqual(expectedMessage, message2.Body, "Expected message body second time");
            }
            finally
            {
                // Delete the message.
                helper.DeleteMessage(queueUrl, message.ReceiptHandle);
            }
        }
        private void ReceiveMessage(AwsClientDetails clientDetails)
        {
            using (var helper = new SQSHelper(clientDetails))
            {
                Amazon.SQS.Model.Message message = helper.ReceiveMessage(QueueUrl);

                if (message != null)
                {
                    MessageId = message.MessageId;
                    MessageBody = message.Body;
                    ReceiptHandle = message.ReceiptHandle;
                    HasMessage = true;
                    Log.LogMessage(MessageImportance.Normal, "Recieved message {0} from queue {1}", MessageId, QueueUrl);
                }
                else
                {
                    MessageId = string.Empty;
                    MessageBody = string.Empty;
                    ReceiptHandle = string.Empty;
                    HasMessage = false;
                    Log.LogMessage(MessageImportance.Normal, "No message received from queue {0}", QueueUrl);
                }
            }
        }
        public void WaitForMessage_Should_ThrowTimeoutException()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            string queueUrl = helper.CreateQueue("TestQ");

            // Get the sent message.
            helper.WaitForMessage(queueUrl, 10, 5);
        }
        public void SendMessage_Should_ReturnMessageId()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            const string messageBody = "TestMessageBody";
            string queueUrl = helper.CreateQueue("TestQ");

            string messageId = helper.SendMessage(messageBody, queueUrl);

            Assert.IsNotEmpty(messageId);
        }
        private void ReceiveMessage(AwsClientDetails clientDetails)
        {
            using (var helper = new SQSHelper(clientDetails))
            {
                Amazon.SQS.Model.Message message = helper.WaitForMessage(QueueUrl, TimeOutSeconds, PollIntervalSeconds);

                MessageId = message.MessageId;
                MessageBody = message.Body;
                ReceiptHandle = message.ReceiptHandle;
                Log.LogMessage(MessageImportance.Normal, "Recieved message {0} from queue {1}", MessageId, QueueUrl);
            }
        }
        private void GetQueueAttributes(AwsClientDetails clientDetails)
        {
            using (var helper = new SQSHelper(clientDetails))
            {
                GetQueueAttributesResult attributes = helper.GetQueueAttributes(QueueUrl);
                Log.LogMessage(MessageImportance.Normal, "Got SQS attributes for Queue {0}", QueueUrl);

                ApproximateNumberOfMessages = GetAttributeValue(attributes, "ApproximateNumberOfMessages");
                ApproximateNumberOfMessagesNotVisible = GetAttributeValue(attributes, "ApproximateNumberOfMessagesNotVisible");
                VisibilityTimeout = GetAttributeValue(attributes, "VisibilityTimeout");
                CreatedTimestamp = GetAttributeValue(attributes, "CreatedTimestamp");
                LastModifiedTimestamp = GetAttributeValue(attributes, "LastModifiedTimestamp");
                //Policy is not a string.
                //Policy = GetAttributeValue(attributes, "Policy");
                MaximumMessageSize = GetAttributeValue(attributes, "MaximumMessageSize");
                MessageRetentionPeriod = GetAttributeValue(attributes, "MessageRetentionPeriod");
                QueueArn = GetAttributeValue(attributes, "QueueArn");
            }
        }