Esempio n. 1
0
 /// <summary>
 /// Converts the Endeca response object into a ContentModel object.
 /// </summary>
 /// <param name="endecaContentModel">EndecaContentModel</param>
 /// <returns>ContentModel object</returns>
 public static ContentModel ToContentModel(EndecaContentModel endecaContentModel)
 {
     return(new ContentModel()
     {
         ContentId = endecaContentModel.PrimaryKey,
         PageTitle = endecaContentModel.PageTitle,
         ContentType = endecaContentModel.ContentType
     });
 }
Esempio n. 2
0
        public List <ContentModel> GetContentItems()
        {
            var host            = ConfigurationManager.AppSettings["endecaHost"].ToString();
            var port            = ConfigurationManager.AppSettings["endecaPort"].ToString();
            var dimensionValues = ConfigurationManager.AppSettings["endecaDimensionValue"].ToString();
            var query           = ConfigurationManager.AppSettings["endecaContentQuery"].ToString();

            string url = "http://" + host + ":" + port + query + BuildQueryString(dimensionValues);

            List <EndecaContentModel> endecaContentModelList = new List <EndecaContentModel>();

            try
            {
                //RESOURCE_LEAK
                WebRequest reqEndeca = WebRequest.Create(url);
                using (HttpWebResponse resEndeca = (HttpWebResponse)reqEndeca.GetResponse())
                {
                    {
                        // Get the stream containing content returned by the server.
                        JObject endecaAsJSON;
                        using (resEndeca)
                        {
                            Stream receiveStream = resEndeca.GetResponseStream();
                            if (receiveStream != null)
                            {
                                using (StreamReader streamReader = new StreamReader(resEndeca.GetResponseStream()))
                                {
                                    endecaAsJSON = JObject.Parse(streamReader.ReadToEnd());

                                    try
                                    {
                                        //if we have results fill in our contentObject
                                        if (endecaAsJSON["mainContent"][0]["records"].Count() > 0)
                                        {
                                            //Go over each result returned from Endeca
                                            foreach (JToken jsonRecord in endecaAsJSON["mainContent"][0]["records"])
                                            {
                                                var endecaContentModel = new EndecaContentModel();
                                                endecaContentModel.ContentType = jsonRecord["attributes"]["ContentTypes"][0].ToString();
                                                endecaContentModel.PageTitle   = jsonRecord["attributes"]["page_title"][0].ToString();
                                                endecaContentModel.PrimaryKey  = jsonRecord["attributes"]["P_Primary_Key"][0].ToString();
                                                endecaContentModelList.Add(endecaContentModel);
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        logger.Error("GetContentItems failed Exception:", ex);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (WebException we)
            {
                //just logging error, allowing for empty object to be returned. No need to blow up process
                logger.Error(we.Message);
                logger.Error("Failed trying to hit: " + url);
            }
            catch (Exception ex)
            {
                //just logging error, allowing for empty object to be returned. No need to blow up process
                logger.Error("GetContentItems Exception trying to hit: " + url + ", error: " + ex.Message);
            }

            return(new ContentModel().ToContentModel(endecaContentModelList));
        }