public async Task <List <Product> > SearchAsync(string searchTerm)
        {
            string requestUri = String.Format("Search?q={0}", searchTerm);

            var responseFetcher = new ResponseFetcher <List <Product> >(_ApiServiceUrl, _ApiAppKey);

            return(await responseFetcher.GetResponseAsync(requestUri).ConfigureAwait(false));
        }
        public async Task <Product> GetProductByNameAsync(string productName)
        {
            string requestUri = String.Format("Products/ByName?name={0}", productName);

            var responseFetcher = new ResponseFetcher <Product>(_ApiServiceUrl, _ApiAppKey);

            return(await responseFetcher.GetResponseAsync(requestUri).ConfigureAwait(false));
        }
        public async Task <Category> GetCategoryAsync(string categoryId)
        {
            string requestUri = String.Format("Categories?id={0}", categoryId);

            var responseFetcher = new ResponseFetcher <Category>(_ApiServiceUrl, _ApiAppKey);

            return(await responseFetcher.GetResponseAsync(requestUri).ConfigureAwait(false));
        }
        public async Task <List <Product> > GetAllChildProductsAsync(string topLevelCategoryId)
        {
            string requestUri = String.Format("Products/ByTopLevelCategory?id={0}", topLevelCategoryId);

            var responseFetcher = new ResponseFetcher <List <Product> >(_ApiServiceUrl, _ApiAppKey);

            return(await responseFetcher.GetResponseAsync(requestUri).ConfigureAwait(false));
        }
        public async Task <List <Category> > GetCategoriesAsync(string parentCategoryId = null)
        {
            string requestUri = String.Format("Categories/SubCategories?parentCategoryId={0}", parentCategoryId);

            var responseFetcher = new ResponseFetcher <List <Category> >(_ApiServiceUrl, _ApiAppKey);

            return(await responseFetcher.GetResponseAsync(requestUri).ConfigureAwait(false));
        }