Example #1
0
        protected void btnReceiveMessage_Click(object sender, EventArgs e)
        {
            if (QueuesList.SelectedIndex > -1)
            {
                string message       = string.Empty;
                string selectedQueue = this.QueuesList.SelectedItem.Value.ToString();

                ReceiveMessageResponse queueReceiveMessageResponse = new ReceiveMessageResponse();
                queueReceiveMessageResponse = objClient.ReceiveMessage(new ReceiveMessageRequest()
                {
                    QueueUrl = selectedQueue, MaxNumberOfMessages = 10
                });
                ReceiveMessageResult objReceiveMessageResult = new ReceiveMessageResult();
                objReceiveMessageResult = queueReceiveMessageResponse.ReceiveMessageResult;

                List <Message> messagesList = new List <Message>();
                messagesList = objReceiveMessageResult.Message;

                foreach (Message objMessage in messagesList)
                {
                    message      += objMessage.Body;
                    receiptHandle = objMessage.ReceiptHandle;
                }

                Session["MessageReceiptHandle"] = receiptHandle;
                txtReceivedMessage.Text         = message;
            }
            else
            {
                Response.Write("<script>alert('Please select Queue from list.');</script>");
            }
        }
Example #2
0
        private int ProcessMessage()
        {
            int           numReceived = 0;
            ActivityItems items       = null;

            try {
                ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);

                if (receiveMessageResponse.IsSetReceiveMessageResult())
                {
                    ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                    numReceived = receiveMessageResult.Message.Count;

                    foreach (Message message in receiveMessageResult.Message)
                    {
                        items = getActivityItems(message);
                        dispatchItems(items);

                        deleteMessageRequest.WithReceiptHandle(message.ReceiptHandle);
                        sqs.DeleteMessage(deleteMessageRequest);
                    }
                }
            } catch (Exception ex) {
                log.Warn("An unknown error has occurred.  Will retry message.", ex);
            }

            return(numReceived);
        }
 public static void ValidateReceiveMessage(ReceiveMessageResult response)
 {
     if (response != null && response.Messages != null && response.Messages.Count > 0)
     {
         foreach (Message message in response.Messages)
         {
             ValidateMD5(message);
         }
     }
 }
Example #4
0
        public void Test_ReceiveMessage_With_ValidQueue_And_Check_For_ReceivedMessage()
        {
            bool   hasCallbackArrived = false;
            string actualValue        = string.Empty;
            string expectedValue      = "A test message body during Unit-Testing";

            SQSResponseEventHandler <object, ResponseEventArgs> handler = null;

            handler = delegate(object sender, ResponseEventArgs args)
            {
                ISQSResponse result = args.Response;
                //Unhook from event.
                _client.OnSQSResponse -= handler;
                ReceiveMessageResponse response = result as ReceiveMessageResponse;
                if (null != response)
                {
                    ReceiveMessageResult messageResult = response.ReceiveMessageResult;
                    if (null != messageResult)
                    {
                        if (messageResult.Message.Count > 0)
                        {
                            Message message = messageResult.Message[0];
                            if (null != message)
                            {
                                actualValue = message.Body;
                            }
                        }
                    }
                }
                hasCallbackArrived = true;
            };

            //Hook to event
            _client.OnSQSResponse += handler;

            //Create request object.
            ReceiveMessageRequest request = new ReceiveMessageRequest
            {
                QueueUrl = (string.Format("{0}/{1}", QueueURL, _queue_UnitTesting)),
            };

            _client.ReceiveMessage(request);

            EnqueueConditional(() => hasCallbackArrived);
            EnqueueCallback(() => Assert.IsTrue(string.Compare(expectedValue, actualValue) == 0));
            EnqueueTestComplete();
        }
Example #5
0
        /// <summary>
        /// Wrapper to receive message and download files <see cref="Threema.MsgApi.Helpers.E2EHelper.ReceiveMessage"/>
        /// </summary>
        /// <param name="id">Sender id</param>
        /// <param name="from">From id</param>
        /// <param name="secret">From secret</param>
        /// <param name="privateKey">From private key</param>
        /// <param name="messageId">Message id</param>
        /// <param name="nonce">Nonce as hex-string</param>
        /// <param name="box">Box message as hex-string</param>
        /// <param name="outputFolder">Optional path to output folder</param>
        /// <param name="apiUrl">Optional api url</param>
        /// <returns>Array with message-type, message-id and message</returns>
        public ArrayList ReceiveMessage(string id, string from, string secret, string privateKey, string messageId, string nonce, string box, string outputFolder = null, string apiUrl = APIConnector.DEFAULTAPIURL)
        {
            byte[] privateKeyBytes = GetKey(privateKey, Key.KeyType.PRIVATE);
            byte[] nonceBytes      = DataUtils.HexStringToByteArray(nonce);

            E2EHelper e2EHelper = new E2EHelper(this.CreateConnector(from, secret, apiUrl), privateKeyBytes);

            byte[] boxBytes = DataUtils.HexStringToByteArray(box);

            ReceiveMessageResult res = e2EHelper.ReceiveMessage(id, messageId, boxBytes, nonceBytes, outputFolder);

            ArrayList result = new ArrayList();

            result.Add(res.Message.GetTypeCode().ToString());
            result.Add(res.MessageId);
            result.Add(res.Message.ToString());
            return(result);
        }
Example #6
0
        public static Message Get(string queue_url)
        {
            AmazonSQS             sqs      = AWSClientFactory.CreateAmazonSQSClient();
            ReceiveMessageRequest r_msgreq = new ReceiveMessageRequest();

            r_msgreq.MaxNumberOfMessages = 1;
            r_msgreq.QueueUrl            = queue_url;
            Decimal Vis_Timeout = System.Convert.ToDecimal(ConfigurationManager.AppSettings["SQS_Visibility"]);

            r_msgreq.VisibilityTimeout = Vis_Timeout;
            ReceiveMessageResponse r_msgres = sqs.ReceiveMessage(r_msgreq);
            //ChangeMessageVisibilityRequest chg_message_vis = new ChangeMessageVisibilityRequest();
            //chg_message_vis.QueueUrl = ConfigurationManager.AppSettings["SQSUrl"];
            //chg_message_vis.ReceiptHandle = r_msgres.ResponseMetadata.RequestId
            ReceiveMessageResult r_msgrst = r_msgres.ReceiveMessageResult;
            Message msg = r_msgrst.Message.FirstOrDefault();

            return(msg);
        }
        protected override void Execute()
        {
            string id     = this.threemaId.Value;
            string from   = this.fromField.Value;
            string secret = this.secretField.Value;

            byte[] privateKey   = this.privateKeyField.GetValue();
            byte[] nonce        = this.nonceField.GetValue();
            string messageId    = this.messageIdField.Value;
            string outputFolder = this.outputFolderField.GetValue();

            E2EHelper e2EHelper = new E2EHelper(this.CreateConnector(from, secret), privateKey);

            byte[] box = DataUtils.HexStringToByteArray(System.Console.ReadLine().Trim());

            ReceiveMessageResult res = e2EHelper.ReceiveMessage(id, messageId, box, nonce, outputFolder);

            System.Console.WriteLine(res.Message.ToString());
            res.Files.ForEach(f => { System.Console.WriteLine(f.FullName); });
        }
        private TaskQueueData GetTask(Priority oPriority)
        {
            string strUrlQueue = GetQueueUrl(oPriority);

            TaskQueueData oData = null;

            try
            {
                using (AmazonSQS oSQSClient = AWSClientFactory.CreateAmazonSQSClient())
                {
                    ReceiveMessageRequest oReceiveMessageRequest = new ReceiveMessageRequest();
                    oReceiveMessageRequest.QueueUrl            = strUrlQueue;
                    oReceiveMessageRequest.MaxNumberOfMessages = 1;

                    ReceiveMessageResponse oReceiveMessageResponse = oSQSClient.ReceiveMessage(oReceiveMessageRequest);
                    if (oReceiveMessageResponse.IsSetReceiveMessageResult())
                    {
                        ReceiveMessageResult oReceiveMessageResult = oReceiveMessageResponse.ReceiveMessageResult;
                        foreach (Message oMessage in oReceiveMessageResult.Message)
                        {
                            oData = TaskQueueData.DeserializeFromXml(oMessage.Body);

                            SQSDataKey oSQSDataKey = new SQSDataKey();
                            oSQSDataKey.m_oPriority        = oPriority;
                            oSQSDataKey.m_strReceiptHandle = oMessage.ReceiptHandle;
                            oData.m_oDataKey = oSQSDataKey;
                            break;
                        }
                    }
                }
            }
            catch (AmazonSQSException)
            {
            }
            catch
            {
            }

            return(oData);
        }
Example #9
0
        public static void Main(string[] args)
        {
            const string QUEUENAME = "MyQueue";

            AmazonSQS sqs = AWSClientFactory.CreateAmazonSQSClient();

            try
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("Getting Started with Amazon SQS");
                Console.WriteLine("===========================================\n");

                //Creating a queue
                Console.WriteLine("Create a queue called MyQueue.\n");
                CreateQueueRequest sqsRequest = new CreateQueueRequest();
                sqsRequest.QueueName = QUEUENAME;
                CreateQueueResponse createQueueResponse = sqs.CreateQueue(sqsRequest);
                String myQueueUrl;
                myQueueUrl = createQueueResponse.CreateQueueResult.QueueUrl;

                //Confirming the queue exists
                ListQueuesRequest  listQueuesRequest  = new ListQueuesRequest();
                ListQueuesResponse listQueuesResponse = sqs.ListQueues(listQueuesRequest);


                var getQueueReq = new GetQueueUrlRequest();
                getQueueReq.QueueName = "AppZwitschern";
                var getQueueResp = sqs.GetQueueUrl(getQueueReq);
                Console.WriteLine(":: Url={0}", getQueueResp.GetQueueUrlResult.QueueUrl);


                Console.WriteLine("Printing list of Amazon SQS queues.\n");
                if (listQueuesResponse.IsSetListQueuesResult())
                {
                    ListQueuesResult listQueuesResult = listQueuesResponse.ListQueuesResult;
                    foreach (String queueUrl in listQueuesResult.QueueUrl)
                    {
                        Console.WriteLine("  QueueUrl: {0}", queueUrl);
                    }
                }
                Console.WriteLine();

                //Sending a message
                Console.WriteLine("Sending a message to MyQueue.\n");
                SendMessageRequest sendMessageRequest = new SendMessageRequest();
                sendMessageRequest.QueueUrl    = myQueueUrl; //URL from initial queue creation
                sendMessageRequest.MessageBody = "This is my message text.";
                sqs.SendMessage(sendMessageRequest);

                //Receiving a message
                ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
                receiveMessageRequest.QueueUrl = myQueueUrl;
                ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);
                if (receiveMessageResponse.IsSetReceiveMessageResult())
                {
                    Console.WriteLine("Printing received message.\n");
                    ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                    foreach (Message message in receiveMessageResult.Message)
                    {
                        Console.WriteLine("  Message");
                        if (message.IsSetMessageId())
                        {
                            Console.WriteLine("    MessageId: {0}", message.MessageId);
                        }
                        if (message.IsSetReceiptHandle())
                        {
                            Console.WriteLine("    ReceiptHandle: {0}", message.ReceiptHandle);
                        }
                        if (message.IsSetMD5OfBody())
                        {
                            Console.WriteLine("    MD5OfBody: {0}", message.MD5OfBody);
                        }
                        if (message.IsSetBody())
                        {
                            Console.WriteLine("    Body: {0}", message.Body);
                        }
                        foreach (Amazon.SQS.Model.Attribute attribute in message.Attribute)
                        {
                            Console.WriteLine("  Attribute");
                            if (attribute.IsSetName())
                            {
                                Console.WriteLine("    Name: {0}", attribute.Name);
                            }
                            if (attribute.IsSetValue())
                            {
                                Console.WriteLine("    Value: {0}", attribute.Value);
                            }
                        }
                    }
                }
                String messageRecieptHandle = receiveMessageResponse.ReceiveMessageResult.Message[0].ReceiptHandle;

                //Deleting a message
                Console.WriteLine("Deleting the message.\n");
                DeleteMessageRequest deleteRequest = new DeleteMessageRequest();
                deleteRequest.QueueUrl      = myQueueUrl;
                deleteRequest.ReceiptHandle = messageRecieptHandle;
                sqs.DeleteMessage(deleteRequest);
            }
            catch (AmazonSQSException ex)
            {
                Console.WriteLine("Caught Exception: " + ex.Message);
                Console.WriteLine("Response Status Code: " + ex.StatusCode);
                Console.WriteLine("Error Code: " + ex.ErrorCode);
                Console.WriteLine("Error Type: " + ex.ErrorType);
                Console.WriteLine("Request ID: " + ex.RequestId);
                Console.WriteLine("XML: " + ex.XML);
            }

            Console.WriteLine("Press Enter to continue...");
            Console.Read();
        }
        public AlertMessage GetNextMessage()
        {
            //Receiving a message
            ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();

            receiveMessageRequest.QueueUrl = queueUrl;
            ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);

            if (receiveMessageResponse.IsSetReceiveMessageResult())
            {
                Console.WriteLine("Printing received message.\n");
                ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                foreach (Message message in receiveMessageResult.Message)
                {
                    AlertMessage m = new AlertMessage();
                    Console.WriteLine("  Message");
                    if (message.IsSetMessageId())
                    {
                        Console.WriteLine("    MessageId: {0}", message.MessageId);
                    }
                    if (message.IsSetReceiptHandle())
                    {
                        Console.WriteLine("    ReceiptHandle: {0}", message.ReceiptHandle);
                    }
                    if (message.IsSetMD5OfBody())
                    {
                        Console.WriteLine("    MD5OfBody: {0}", message.MD5OfBody);
                    }
                    if (message.IsSetBody())
                    {
                        m.Body = message.Body;
                        Console.WriteLine("    Body: {0}", message.Body);
                    }
                    foreach (Amazon.SQS.Model.Attribute attribute in message.Attribute)
                    {
                        Console.WriteLine("  Attribute");
                        if (attribute.IsSetName() && attribute.Name == "Subject")
                        {
                            if (attribute.IsSetValue())
                            {
                                m.Subject = attribute.Value;
                            }
                        }
                        if (attribute.IsSetValue())
                        {
                            Console.WriteLine("    Value: {0}", attribute.Value);
                        }
                    }

                    // Deleting a message
                    Console.WriteLine("Deleting the message.\n");
                    DeleteMessageRequest deleteRequest = new DeleteMessageRequest();
                    deleteRequest.QueueUrl      = queueUrl;
                    deleteRequest.ReceiptHandle = message.ReceiptHandle;
                    sqs.DeleteMessage(deleteRequest);

                    return(m);
                }
            }
            return(null);
        }
Example #11
0
        /// <summary>
        /// Decrypt a Message and download the blobs of the Message (e.g. image or file)
        /// </summary>
        /// <param name="threemaId">Threema ID of the sender</param>
        /// <param name="messageId">Message ID</param>
        /// <param name="box">Encrypted box data of the file/image message</param>
        /// <param name="nonce">Nonce that was used for message encryption</param>
        /// <param name="outputFolder">Output folder for storing decrypted images/files</param>
        /// <returns>Result of message reception</returns>
        public ReceiveMessageResult ReceiveMessage(string threemaId, string messageId, byte[] box, byte[] nonce, string outputFolder)
        {
            //fetch public key
            byte[] publicKey = this.apiConnector.LookupKey(threemaId);

            if (publicKey == null)
            {
                throw new InvalidKeyException("invalid threema id");
            }

            ThreemaMessage message = CryptTool.DecryptMessage(box, this.privateKey, publicKey, nonce);

            if (message == null)
            {
                return(null);
            }

            ReceiveMessageResult result = new ReceiveMessageResult(messageId, message);

            if (message.GetType() == typeof(ImageMessage))
            {
                //download image
                ImageMessage imageMessage = (ImageMessage)message;
                byte[]       fileData     = this.apiConnector.DownloadFile(imageMessage.BlobId);

                if (fileData == null)
                {
                    throw new MessageParseException();
                }

                byte[]   decryptedFileContent = CryptTool.Decrypt(fileData, privateKey, publicKey, imageMessage.Nonce);
                FileInfo imageFile            = new FileInfo(outputFolder + "/" + messageId + ".jpg");

                using (FileStream stream = File.OpenWrite(imageFile.FullName))
                {
                    stream.Write(decryptedFileContent, 0, decryptedFileContent.Length);
                    stream.Close();
                }

                result.Files.Add(imageFile);
            }
            else if (message.GetType() == typeof(FileMessage))
            {
                //download file
                FileMessage fileMessage = (FileMessage)message;
                byte[]      fileData    = this.apiConnector.DownloadFile(fileMessage.BlobId);

                byte[]   decryptedFileData = CryptTool.DecryptFileData(fileData, fileMessage.EncryptionKey);
                FileInfo file = new FileInfo(outputFolder + "/" + messageId + "-" + fileMessage.FileName);

                using (FileStream stream = File.OpenWrite(file.FullName))
                {
                    stream.Write(decryptedFileData, 0, decryptedFileData.Length);
                    stream.Close();
                }

                result.Files.Add(file);

                if (fileMessage.ThumbnailBlobId != null)
                {
                    byte[] thumbnailData = this.apiConnector.DownloadFile(fileMessage.ThumbnailBlobId);

                    byte[]   decryptedThumbnailData = CryptTool.DecryptFileThumbnailData(thumbnailData, fileMessage.EncryptionKey);
                    FileInfo thumbnailFile          = new FileInfo(outputFolder + "/" + messageId + "-thumbnail.jpg");
                    using (FileStream stream = File.OpenWrite(thumbnailFile.FullName))
                    {
                        stream.Write(decryptedThumbnailData, 0, decryptedThumbnailData.Length);
                        stream.Close();
                    }

                    result.Files.Add(thumbnailFile);
                }
            }

            return(result);
        }