예제 #1
0
        internal async Task <PVOutputArrayResponse <TResponseContentType> > ExecuteArrayRequestAsync <TResponseContentType>(IRequest request, Dictionary <string, object> loggingScope, CancellationToken cancellationToken)
        {
            HttpResponseMessage responseMessage = null;

            try
            {
                using (Logger.BeginScope(loggingScope))
                {
                    using (HttpRequestMessage requestMessage = CreateRequestMessage(request))
                    {
                        responseMessage = await ExecuteRequestAsync(requestMessage, cancellationToken).ConfigureAwait(false);
                    }
                    Stream responseStream = await GetResponseContentStreamAsync(responseMessage).ConfigureAwait(false);

                    var result = new PVOutputArrayResponse <TResponseContentType>();
                    result.ApiRateInformation = GetApiRateInformationfromResponse(responseMessage);

                    if (ResponseIsErrorResponse(responseMessage, responseStream, result))
                    {
                        return(result);
                    }

                    IArrayStringReader <TResponseContentType> reader  = StringFactoryContainer.CreateArrayReader <TResponseContentType>();
                    IEnumerable <TResponseContentType>        content = await reader.ReadArrayAsync(responseStream, cancellationToken).ConfigureAwait(false);

                    result.IsSuccess = true;
                    result.Values    = content;
                    return(result);
                }
            }
            finally
            {
                responseMessage.Dispose();
            }
        }
예제 #2
0
 protected static void AssertStandardResponse <TResponseContentType>(PVOutputArrayResponse <TResponseContentType> response)
 {
     Assert.Multiple(() =>
     {
         Assert.That(response.Error, Is.Null);
         Assert.That(response.HasValues, Is.True);
         Assert.That(response.IsSuccess, Is.True);
         Assert.That(response.Values, Is.Not.Null);
     });
 }
        public async Task FavouriteService_GetSingle()
        {
            PVOutputClient client = TestUtility.GetMockClient(out MockHttpMessageHandler testProvider);

            testProvider.ExpectUriFromBase(GETFAVOURITE_URL)
            .RespondPlainText(FAVOURITE_RESPONSE_SINGLE);

            PVOutputArrayResponse <IFavourite> response = await client.Favourite.GetFavouritesAsync();

            testProvider.VerifyNoOutstandingExpectation();
            AssertStandardResponse(response);
        }
        public void PVOutputArrayResponse_IsEquivalentTo_ReturnsEquivelanceNotEquals()
        {
            var response1 = new PVOutputArrayResponse <IStatus>()
            {
                IsSuccess = true, Values = new List <Status>()
            };
            var response2 = new PVOutputArrayResponse <IStatus>()
            {
                IsSuccess = true, Values = new List <Status>()
            };
            var response3 = new PVOutputArrayResponse <IStatus>()
            {
                IsSuccess = false
            };

            Assert.Multiple(() =>
            {
                Assert.That(response1.IsEquivalentTo(response2), Is.True);
                Assert.That(response1.IsEquivalentTo(response3), Is.False);
            });
        }