示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }