/// <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 }); }
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)); }