internal async Task <YelpSearchResult> GetResults(YelpAPIContext context, YelpSearch search)
        {
            var authToken = context.YelpAuthToken.OrderByDescending(a => a.expire_date).SingleOrDefault();

            var client = new HttpClient();

            //creat the query search string
            var queryString = Uri.EscapeUriString(String.Format($"?term={search.Term}&location={search.Location}", search.Term, search.Location));

            // created the complete url for which the Http Post will be used
            client.BaseAddress = new System.UriBuilder(baseUrl + searchUri + queryString).Uri;
            // clean up headers for API call operations
            client.DefaultRequestHeaders.Accept.Clear();

            // name = [value] Post data in the Http header -  Adding to the the Authorization to header
            client.DefaultRequestHeaders.Add("Authorization", authToken.token_type + " " + Uri.EscapeDataString(authToken.access_token));

            //Posting the content created to the URL
            var response = await client.GetAsync(client.BaseAddress);

            // The Response returns from yelp
            var responseString = await response.Content.ReadAsStringAsync();

            // Take the response string and convert to the json
            var searchResult = JsonConvert.DeserializeObject <YelpSearchResult>(responseString);

            return(searchResult);
        }
示例#2
0
        public async Task <IActionResult> Search([Bind("Term, Location")] YelpSearch search)
        {
            var API           = new YelpAPI.YelpHelpers();
            var authenticated = await API.Authenticate(AppKeys, _context);

            if (authenticated)
            {
                YelpSearchResult searchResult =
                    await API.GetResults(_context, search);

                return(View("YelpResult", searchResult));
            }

            return(View());
        }