Exemple #1
0
        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;
        }
Exemple #2
0
        public HttpResponseMessage SendPostRequest(Uri uri, string authenticationHeader, string body, ActivityMessage message)
        {
            using (HttpClientHandler handler = new HttpClientHandler()
            {
                UseCookies = false
            })
            {
                using (HttpClient webClient = new HttpClient(handler))
                {
                    webClient.DefaultRequestHeaders.Authorization = ParseAuthenticationHeader(authenticationHeader);

                    HttpResponseMessage response;

                    if (body != null)
                    {
                        //convert string into memorystream to be passed in the post request
                        byte[]       bytes     = Encoding.ASCII.GetBytes(body);
                        MemoryStream memStream = new MemoryStream(bytes);

                        using (StreamContent content = new StreamContent(memStream))
                        {
                            response = webClient.PostAsync(uri, content).Result;
                        }
                    }
                    else
                    {
                        response = webClient.PostAsJsonAsync <ActivityMessage>(uri.ToString(), message).Result;
                    }

                    return(response);
                }
            }
        }