private void btnDequeue_Click()

in FMLab/ConnectorClientApplication/mainForm.cs [53:102]


        private void btnDequeue_Click(object sender, EventArgs e)
        {
            if (txtBoxOutActivity.Text.Length == 0)
                return;

            Cursor.Current = Cursors.WaitCursor;

            //authenticate
            Helper helper = new Helper(txtBoxClientId.Text, txtBoxSecret.Text);
            
            //remove the unwanted curly braces
            txtBoxOutActivity.Text = txtBoxOutActivity.Text.Replace("{", "");
            txtBoxOutActivity.Text = txtBoxOutActivity.Text.Replace("}", "");

            //access the Connector API
            UriBuilder dequeueUri = new UriBuilder(txtBoxBaseUri.Text);
            dequeueUri.Path = "api/connector/dequeue/" + txtBoxOutActivity.Text;
            

            //send a request to get the next queue message
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, dequeueUri.Uri);
            request.Headers.Add("Authorization", helper.AuthenticationHeader);
            HttpResponseMessage response = helper.SendRequest(request);

            //read the response
            ActivityMessage responseMessage = response.Content.ReadAsAsync<ActivityMessage>().Result;
            if (responseMessage == null)
            {
                MessageBox.Show("No more messages in the queue");
                return;
            }           

            
            //read the downloadlocation and make a blob request
            request = new HttpRequestMessage(HttpMethod.Get, responseMessage.DownloadLocation.ToString());
            request.Headers.Add("Authorization", helper.AuthenticationHeader);

            //send a request to get the actual content from the blob storage
            HttpResponseMessage blobResponse = helper.SendRequest(request);
            richTxtDequeue.Text = blobResponse.Content.ReadAsStringAsync().Result;

            //ack the message
            UriBuilder ackUri= new UriBuilder(txtBoxBaseUri.Text);
            ackUri.Path = "api/connector/ack/" + txtBoxOutActivity.Text;
            helper.SendPostRequest(ackUri.Uri, helper.AuthenticationHeader, null, responseMessage);

            richTxtLog.AppendText ("Message dequeued and acked. MessageId: " + responseMessage.CorrelationId + "\u2028");

            Cursor.Current = Cursors.Default;
        }