public void ActsAsFactory()
        {
            // Arrange
            var httpClientContainer = new HttpClientContainer();

            // Act
            var httpClient = httpClientContainer.Get(new Uri("http://google.com"));

            //Assert
            Assert.That(httpClient, Is.Not.Null);
        }
Exemplo n.º 2
0
        protected void Send(int i, int j, HttpClientContainer hcc)
        {
            FSending[i][j] = true;
            HttpMethod         hm  = new HttpMethod(FMethod[i][j].ToString());
            HttpRequestMessage hrm = new HttpRequestMessage(hm, FPath[i][j]);
            StringContent      sc  = new StringContent(FContentIn[i][j], Encoding.UTF8, FMediaType[i][j]);

            hrm.Content = sc;
            Task <HttpResponseMessage> requesttask = hcc.Send(hrm, FCompletion[i]);

            FTask[i][j] = requesttask;
        }
        public void DifferentUrisGenerateDifferentClients()
        {
            // Arrange
            var httpClientContainer = new HttpClientContainer();

            // Act
            var httpClient1 = httpClientContainer.Get(new Uri("http://google.com"));
            var httpClient2 = httpClientContainer.Get(new Uri("http://microsoft.com"));

            // Assert
            Assert.That(!object.ReferenceEquals(httpClient1, httpClient2));
        }
        public void OnlyGeneratesANewInstanceTheFirstTimePerUri()
        {
            // Arrange
            var httpClientContainer = new HttpClientContainer();

            // Act
            var httpClient1 = httpClientContainer.Get(new Uri("http://google.com"));
            var httpClient2 = httpClientContainer.Get(new Uri("http://google.com"));

            // Assert
            Assert.That(object.ReferenceEquals(httpClient1, httpClient2));
        }
Exemplo n.º 5
0
        protected void Send(int i, int j, HttpClientContainer hcc)
        {
            FSending[i][j] = true;
            HttpMethod         hm  = new HttpMethod(FMethod[i][j].ToString());
            HttpRequestMessage hrm = new HttpRequestMessage(hm, FPath[i][j]);

            if (FMethod[i][j] != SendMethod.Get)
            {
                StringContent sc = new StringContent(FContentIn[i][j], Encoding.UTF8, FMediaType[i][j]);
                hrm.Content = sc;
            }
            var request = hcc.Send(hrm, FCompletion[i]);

            FRequest[i][j] = request;
        }
        public void ReferencesAreKeptOnSuccessiveGenerations()
        {
            // Arrange
            var httpClientContainer = new HttpClientContainer();

            // Act
            var httpClient1 = httpClientContainer.Get(new Uri("http://google.com"));
            var httpClient2 = httpClientContainer.Get(new Uri("http://microsoft.com"));
            var httpClient3 = httpClientContainer.Get(new Uri("http://google.com"));
            var httpClient4 = httpClientContainer.Get(new Uri("http://microsoft.com"));

            // Assert
            Assert.That(object.ReferenceEquals(httpClient1, httpClient3));
            Assert.That(object.ReferenceEquals(httpClient2, httpClient4));
        }
Exemplo n.º 7
0
        public void Evaluate(int SpreadMax)
        {
            if (FClient.IsConnected)
            {
                FTask.SliceCount      = FClient.SliceCount;
                FHeaders.SliceCount   = FClient.SliceCount;
                FContent.SliceCount   = FClient.SliceCount;
                FStatus.SliceCount    = FClient.SliceCount;
                FReason.SliceCount    = FClient.SliceCount;
                FSending.SliceCount   = FClient.SliceCount;
                FCompleted.SliceCount = FClient.SliceCount;
                for (int i = 0; i < FClient.SliceCount; i++)
                {
                    if (FClient[i] is HttpClientContainer)
                    {
                        int cSpreadMax = 0;
                        cSpreadMax = Math.Max(cSpreadMax, FPath[i].SliceCount);
                        cSpreadMax = Math.Max(cSpreadMax, FContentIn[i].SliceCount);
                        cSpreadMax = Math.Max(cSpreadMax, FMethod[i].SliceCount);
                        cSpreadMax = Math.Max(cSpreadMax, FMediaType[i].SliceCount);

                        FTask[i].SliceCount      = cSpreadMax;
                        FHeaders[i].SliceCount   = cSpreadMax;
                        FContent[i].SliceCount   = cSpreadMax;
                        FStatus[i].SliceCount    = cSpreadMax;
                        FReason[i].SliceCount    = cSpreadMax;
                        FSending[i].SliceCount   = cSpreadMax;
                        FCompleted[i].SliceCount = cSpreadMax;

                        HttpClientContainer hcc = FClient[i] as HttpClientContainer;
                        for (int j = 0; j < cSpreadMax; j++)
                        {
                            FCompleted[i][j] = false;

                            if (FSend[i][j])
                            {
                                this.Send(i, i, hcc);
                            }

                            if (FTask[i][j] != null)
                            {
                                if (FTask[i][j].IsCompleted)
                                {
                                    Stream tmp = new MemoryStream();
                                    if (FSending[i][j])
                                    {
                                        FCompleted[i][j] = true;
                                    }
                                    FHeaders[i][j] = FTask[i][j].Result.Headers;
                                    FContent[i][j] = FTask[i][j].Result.Content.ReadAsStreamAsync().Result;
                                    FStatus[i][j]  = FTask[i][j].Result.StatusCode.ToString();
                                    FReason[i][j]  = FTask[i][j].Result.ReasonPhrase;
                                    FSending[i][j] = false;

                                    if (FLongPoll[i])
                                    {
                                        this.Send(i, i, hcc);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
 /// <summary>
 /// Fluently specify that an existing FlurlClient should be used to call the Url, rather than creating a new one.
 /// Enables re-using the underlying HttpClient.
 /// </summary>
 /// <param name="url">The URL.</param>
 public static FlurlClient WithFlurlClient(this Url url)
 {
     return(url.WithClient(HttpClientContainer.GetClient()));
 }