コード例 #1
0
ファイル: RssHandler.cs プロジェクト: misterPaul0/Curt
        /// <summary>
        /// Creates an RSS Item
        /// </summary>
        /// <param name="SearchItem"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        private GenericRssElement GetRssItem(SearchResultsInfo SearchItem)
        {
            var    item = new GenericRssElement();
            string URL  = Globals.NavigateURL(SearchItem.TabId);

            if (URL.ToLower().IndexOf(HttpContext.Current.Request.Url.Host.ToLower()) == -1)
            {
                URL = Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + URL;
            }
            item["title"]       = SearchItem.Title;
            item["description"] = SearchItem.Description;
            //TODO:  JMB: We need to figure out how to persist the dc prefix in the XML output.  See the Render method below.
            //item("dc:creator") = SearchItem.AuthorName
            item["pubDate"] = SearchItem.PubDate.ToUniversalTime().ToString("r");

            if (!string.IsNullOrEmpty(SearchItem.Guid))
            {
                if (URL.Contains("?"))
                {
                    URL += "&" + SearchItem.Guid;
                }
                else
                {
                    URL += "?" + SearchItem.Guid;
                }
            }
            item["link"] = URL;
            item["guid"] = URL;
            return(item);
        }
コード例 #2
0
        /// <summary>
        /// Builds RSS Item
        /// </summary>
        /// <returns></returns>
        /// <remarks>
        /// ---Corrected pubDate elment name.
        /// ---Corrected formatting of pubDate value to RFC-822 spec.
        /// ---Correction for guid element '&' replaced with '?' to correct linkage issues.
        /// </remarks>
        /// <history>Sat, 29 Jan 2005 Phil Guerra
        /// </history>
        private string BuildItem(SearchResultsInfo objResult, int Indent)
        {
            StringBuilder sb = new StringBuilder(1024);

            string URL = Globals.NavigateURL(objResult.TabId);

            if (URL.IndexOf(Request.Url.Host) == -1)
            {
                URL = Globals.AddHTTP(Request.Url.Host) + URL;
            }

            sb.Append(WriteElement("item", Indent));
            sb.Append(WriteElement("title", objResult.Title, Indent + 1));
            sb.Append(WriteElement("description", objResult.Description, Indent + 1));
            sb.Append(WriteElement("link", URL, Indent + 1));
            sb.Append(WriteElement("dc:creator", objResult.AuthorName, Indent + 1));
            // Commented out <author> element - RSSv2.0 specs call for an email used here,
            // not just a simple name.
            // sb.Append(WriteElement("author", objResult.AuthorName, Indent + 1))
            sb.Append(WriteElement("pubDate", objResult.PubDate.ToUniversalTime().ToString("r"), Indent + 1));
            sb.Append(WriteElement("guid", URL + Convert.ToString(!String.IsNullOrEmpty(objResult.Guid) ? "?" + objResult.Guid : ""), Indent + 1));
            sb.Append(WriteElement("/item", Indent));

            return(sb.ToString());
        }
コード例 #3
0
        public async Task <SearchResultsInfo> GetSearchResultsAsync(string searchTerms, int maxResults, string languageId, bool haveUser, List <DataProviderFilterInfo> Filters = null)
        {
            if (!SearchDataProvider.IsUsable)
            {
                return(new SearchResultsInfo());
            }
            SearchResultsInfo info = await ParseAsync(searchTerms, maxResults, languageId, haveUser, Filters);

            return(info);
        }
コード例 #4
0
ファイル: UnitTest1.cs プロジェクト: ravibeta/csharpexamples
 public void TestSearch()
 {
     var db = Directory.EnumerateFiles(Environment.CurrentDirectory).FirstOrDefault(x => x.Contains(DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString()));
     if (db == null) return;
     using (var reader = new StreamReader(db))
     {
         var results = new SearchResults();
         results.Results = new List<SearchResult>();
         reader.ReadToEnd().Split(new char[] { '\n' }).ToList().ForEach(x => { var result = new SearchResult(); result.Raw = x; results.Results.Add(result); });
         var info = new SearchResultsInfo();
         var search = new SearchProcessor();
         Assert.IsTrue(results.Results.Count > 0, "no results returned.");
         Assert.IsTrue(search.Execute(results, info), "Search failed.");
     }
 }
コード例 #5
0
        private void BindData()
        {
            object o;
            var    results = new SearchResultsInfoCollection();

            if (ddlCategoryList.SelectedIndex == 0)
            {
                o = Settings["csCategoryId"];
                if (o != null)
                {
                    int categoryOption;
                    if (int.TryParse(o.ToString(), out categoryOption))
                    {
                        results = Search(categoryOption, txtCategorySearch.Text.Trim());
                    }
                }
            }
            else
            {
                results = Search(Convert.ToInt32(ddlCategoryList.SelectedValue, CultureInfo.InvariantCulture), txtCategorySearch.Text.Trim());
            }

            var dt = new DataTable {
                Locale = CultureInfo.InvariantCulture
            };

            //DataColumn dc = new DataColumn("TabId");
            dt.Columns.Add(new DataColumn("TabId", typeof(int)));
            dt.Columns.Add(new DataColumn("Guid", typeof(string)));
            dt.Columns.Add(new DataColumn("Title", typeof(string)));
            dt.Columns.Add(new DataColumn("Relevance", typeof(int)));
            dt.Columns.Add(new DataColumn("Description", typeof(string)));
            dt.Columns.Add(new DataColumn("PubDate", typeof(DateTime)));

            //Get the maximum items to display
            int maxItems;

            o = Settings["csMaxResults"];
            if (o == null || !int.TryParse(o.ToString(), out maxItems))
            {
                maxItems = results.Count;
            }

            if (results.Count < maxItems || maxItems < 1)
            {
                maxItems = results.Count;
            }

            int itemsPage = 10;

            o = Settings["csPerPage"];
            if (o != null)
            {
                //itemsPage = Convert.ToInt32(Settings["perpage"]);
                if (!int.TryParse(o.ToString(), out itemsPage))
                {
                    itemsPage = 10;
                }
            }

            int titleLength = 0;

            o = Settings["csTitleLength"];
            if (o != null)
            {
                if (!int.TryParse(o.ToString(), out titleLength))
                {
                    titleLength = 10;
                }
            }

            int descLength = 0;

            o = Settings["csDescriptionLength"];
            if (o != null)
            {
                if (!int.TryParse(o.ToString(), out descLength))
                {
                    descLength = 10;
                }
            }

            for (int i = 0; i < maxItems; i++)
            {
                SearchResultsInfo resultItem = results[i];
                DataRow           dr         = dt.NewRow();
                dr["TabId"] = resultItem.TabId;
                dr["Guid"]  = resultItem.Guid;
                if (titleLength > 0 && titleLength < resultItem.Title.Length)
                {
                    dr["Title"] = resultItem.Title.Substring(0, titleLength);
                }
                else
                {
                    dr["Title"] = resultItem.Title;
                }
                dr["Relevance"] = resultItem.Relevance;
                if (descLength > 0 && descLength < resultItem.Description.Length)
                {
                    dr["Description"] = resultItem.Description.Substring(0, descLength);
                }
                else
                {
                    dr["Description"] = resultItem.Description;
                }

                dr["PubDate"] = resultItem.PubDate;

                dt.Rows.Add(dr);
            }

            using (var dv = new DataView(dt))
            {
                dv.Sort = "Relevance DESC";
                if (itemsPage < 1)
                {
                    dgResults.AllowPaging        = false;
                    dgResults.PagerStyle.Visible = false;
                }
                else
                {
                    dgResults.PageSize           = itemsPage;
                    dgResults.PagerStyle.Visible = results.Count >= dgResults.PageSize;
                }
                dgResults.DataSource = dv;
                dgResults.DataBind();

                dgResults.Visible    = results.Count != 0;
                lblNoResults.Visible = results.Count == 0;
            }
        }