public async Task QueryCustomObjectsByContainer()
        {
            //Create container with 5 Custom FooBar Objects and container with 3 Foo Objects
            string fooBarContainer = $"FooBarContainer{TestingUtility.RandomInt()}";
            string fooContainer    = $"FooContainer{TestingUtility.RandomInt()}";

            await WithListOfCustomObject <FooBar>(client,
                                                  customObjectDraft => DefaultCustomObjectDraftWithContainerName(customObjectDraft, fooBarContainer),
                                                  5, async fooBarList =>
            {
                Assert.Equal(5, fooBarList.Count);
                await WithListOfCustomObject <Foo>(client,
                                                   customObjectDraft => DefaultCustomObjectDraftWithContainerName(customObjectDraft, fooContainer),
                                                   3, async fooList =>
                {
                    Assert.Equal(3, fooList.Count);
                    //Query FooBar Custom Objects using Container name
                    var queryCommand = new QueryByContainerCommand <CustomObject>(fooBarContainer);
                    var returnedSet  = await client.ExecuteAsync(queryCommand);

                    Assert.NotNull(returnedSet);
                    Assert.Equal(5, returnedSet.Results.Count);
                    Assert.Equal(fooBarContainer, returnedSet.Results[0].Container);
                });
            });
        }
        private Uri GetRequestUri <T>(QueryByContainerCommand <T> command)
        {
            string requestUri = this.GetMessageBase <T>();

            requestUri += $"/{command.Container}";
            List <KeyValuePair <string, string> > queryStringParameters = new List <KeyValuePair <string, string> >();

            if (command.QueryParameters != null)
            {
                IQueryParametersBuilder queryParametersBuilder = this.queryParametersBuilderFactory.GetParameterBuilder(command.QueryParameters);
                queryStringParameters.AddRange(queryParametersBuilder.GetQueryParameters(command.QueryParameters));
            }

            queryStringParameters.AddRange(this.GetAdditionalParameters(command.AdditionalParameters));
            queryStringParameters.ForEach(x => { requestUri = QueryHelpers.AddQueryString(requestUri, x.Key, x.Value); });
            return(new Uri(requestUri, UriKind.Relative));
        }
 public QueryByContainerHttpApiCommand(QueryByContainerCommand <T> command, IRequestMessageBuilderFactory requestMessageBuilderFactory)
 {
     this.command        = command;
     this.requestBuilder = requestMessageBuilderFactory.GetRequestMessageBuilder <QueryByContainerRequestMessageBuilder>();
 }
 public HttpRequestMessage GetRequestMessage <T>(QueryByContainerCommand <T> command)
 {
     return(this.GetRequestMessage <T>(this.GetRequestUri <T>(command), null, HttpMethod));
 }