public async Task <GoodreadsReviewsResult> GetReviewsAsync(int bookID) { var settings = ConfigurationManager.AppSettings; var baseUrl = settings["GoodreadsReviewsBaseUrl"]; var apiKey = settings["GoodreadsApiKey"]; var link = new GoodreadsApiReviews() { BaseUrl = baseUrl, ApiKey = apiKey, BookID = bookID }; HttpRequestMessage request = link.CreateRequest(); using (var client = new HttpClient()) { HttpResponseMessage response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); GoodreadsReviewsResult result = link.ParseResponse(response); return(result); } }
public GoodreadsReviewsResult ParseResponse(HttpResponseMessage response) { var result = new GoodreadsReviewsResult(); if (!response.IsSuccessStatusCode) { return(result); } var body = response.Content.ReadAsStringAsync().Result; var xmlRoot = XElement.Parse(body); var ratingStr = (string)xmlRoot.Descendants("average_rating").First(); var rating = float.Parse(ratingStr, CultureInfo.InvariantCulture); var reviews = (string)xmlRoot.Descendants("reviews_widget").First(); result.Reviews = new GoodreadsReviews() { AverageRating = rating, ReviewsHtml = reviews }; return(result); }