Example #1
0
 internal WebSearchData(SearchData result, string dispUrl, DateTime crwDate, Language language, string smFeed)
     : base(result.Title, result.Description, result.Url, result.ClickUrl)
 {
     mDisplayUrl = dispUrl;
     mCrawlingDate = crwDate;
     mLanguage = language;
     mSMFeed = smFeed;
 }
Example #2
0
 internal ImageSearchData(SearchData result, Uri refUrl, Uri refClkUrl, long fileSize, ImageFileType fileFormat, int height, int width, Uri tmbUrl, int tmbHeight, int tmbWidth)
     : base(result.Title, result.Description, result.Url, result.ClickUrl)
 {
     mRefererUrl      = refUrl;
     mRefererClickUrl = refClkUrl;
     mFileSize        = fileSize;
     mFileFormat      = fileFormat;
     mHeight          = height;
     mWidth           = width;
     mThumbnail       = new Thumbnail(tmbUrl, tmbHeight, tmbWidth);
 }
Example #3
0
 internal ImageSearchData(SearchData result, Uri refUrl, Uri refClkUrl, long fileSize, ImageFileType fileFormat, int height, int width, Uri tmbUrl, int tmbHeight, int tmbWidth)
     : base(result.Title, result.Description, result.Url, result.ClickUrl)
 {
     mRefererUrl = refUrl;
     mRefererClickUrl = refClkUrl;
     mFileSize = fileSize;
     mFileFormat = fileFormat;
     mHeight = height;
     mWidth = width;
     mThumbnail = new Thumbnail(tmbUrl, tmbHeight, tmbWidth);
 }
Example #4
0
        private NewsSearchResult ToBossNewsSearchResult(XElement node)
        {
            SearchData result = this.ToSearchResult(node);

            if (result != null)
            {
                DateTime crwDate   = default(DateTime);
                Language language  = Language.en;
                string   source    = string.Empty;
                Uri      sourceUrl = null;

                foreach (XElement prpNode in node.Elements())
                {
                    switch (prpNode.Name.LocalName)
                    {
                    case "date":
                        crwDate = new DateTime(1970, 1, 1).AddSeconds(Convert.ToInt32(prpNode.Value));
                        break;

                    case "language":
                        language = this.StringToLanguage(prpNode.Value);
                        break;

                    case "source":
                        source = prpNode.Value;
                        break;

                    case "sourceurl":
                        if (prpNode.Value.Trim() != string.Empty)
                        {
                            sourceUrl = new Uri(prpNode.Value, UriKind.Absolute);
                        }
                        break;
                    }
                }

                return(new NewsSearchResult(result, source, sourceUrl, crwDate, language));
            }
            else
            {
                return(null);
            }
        }
Example #5
0
        private WebSearchData ToBossWebSearchResult(XElement node)
        {
            SearchData result = this.ToSearchResult(node);

            if (result != null)
            {
                string          dispUrl  = string.Empty;
                System.DateTime crwDate  = default(System.DateTime);
                Language        language = Language.en;
                string          smFeed   = string.Empty;

                foreach (XElement prpNode in node.Elements())
                {
                    switch (prpNode.Name.LocalName)
                    {
                    case "dispurl":
                        dispUrl = prpNode.Value;
                        break;

                    case "date":
                        System.DateTime.TryParse(prpNode.Value, new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.AssumeUniversal, out crwDate);
                        break;

                    case "language":
                        language = this.StringToLanguage(prpNode.Value);
                        break;

                    case "smfeed":
                        smFeed = prpNode.ToString();
                        break;
                    }
                }
                return(new WebSearchData(result, dispUrl, crwDate, language, smFeed));
            }
            else
            {
                return(null);
            }
        }
Example #6
0
 internal NewsSearchResult(SearchData result, string source, Uri sourceUrl, DateTime crwDate, Language language)
     : base(result.Title, result.Description, result.Url, result.ClickUrl)
 {
     mSource = source;
     mSourceUrl = sourceUrl;
     mCrawlingDate = crwDate;
     mLanguage = language;
 }
Example #7
0
        protected override SearchResult ConvertResult(Base.ConnectionInfo connInfo, System.IO.Stream stream, Base.SettingsBase settings)
        {
            List <SearchDataContainer> containers = new List <SearchDataContainer>();
            List <SearchData>          lst        = new List <SearchData>();

            XDocument xmlDoc = MyHelper.ParseXmlDocument(stream);

            if (xmlDoc != null)
            {
                XElement bossResponseNode = XPath.GetElement("bossresponse", xmlDoc);
                if (bossResponseNode != null)
                {
                    int respCode = Convert.ToInt32(MyHelper.GetXmlAttributeValue(bossResponseNode, "responsecode"));

                    if (respCode == 200)
                    {
                        foreach (XElement containerNode in bossResponseNode.Elements())
                        {
                            List <SearchData> results = new List <SearchData>();
                            int  start        = Convert.ToInt32(MyHelper.GetXmlAttributeValue(containerNode, "start"));
                            int  count        = Convert.ToInt32(MyHelper.GetXmlAttributeValue(containerNode, "count"));
                            long totalResults = Convert.ToInt64(MyHelper.GetXmlAttributeValue(containerNode, "totalresults"));

                            XElement resultsNode = MyHelper.EnumToArray(containerNode.Elements())[0];
                            if (resultsNode.Name.LocalName == "results")
                            {
                                foreach (XElement resultNode in resultsNode.Elements())
                                {
                                    if (resultNode.Name.LocalName == "result")
                                    {
                                        SearchData res = null;
                                        switch (containerNode.Name.LocalName)
                                        {
                                        case "web":
                                        case "limitedweb":
                                            res = this.ToBossWebSearchResult(resultNode);
                                            break;

                                        case "images":
                                            res = this.ToBossImageSearchResult(resultNode);
                                            break;

                                        case "news":
                                            res = this.ToBossNewsSearchResult(resultNode);
                                            break;

                                        case "spelling":
                                            res = this.ToBossSpellingSearchResult(resultNode);
                                            break;
                                        }
                                        if (res != null)
                                        {
                                            results.Add(res);
                                        }
                                    }
                                }
                            }

                            switch (containerNode.Name.LocalName)
                            {
                            case "web":
                            case "limitedweb":
                                List <WebSearchData> webResults = new List <WebSearchData>();
                                foreach (SearchData res in results)
                                {
                                    if (res is WebSearchData)
                                    {
                                        webResults.Add((WebSearchData)res);
                                    }
                                }

                                containers.Add(new WebSearchDataContainer(webResults.ToArray(), start, count, totalResults));
                                break;

                            case "images":
                                List <ImageSearchData> imgResults = new List <ImageSearchData>();
                                foreach (SearchData res in results)
                                {
                                    if (res is ImageSearchData)
                                    {
                                        imgResults.Add((ImageSearchData)res);
                                    }
                                }

                                containers.Add(new ImageSearchDataContainer(imgResults.ToArray(), start, count, totalResults));
                                break;

                            case "news":
                                List <NewsSearchResult> newsResults = new List <NewsSearchResult>();
                                foreach (SearchData res in results)
                                {
                                    if (res is NewsSearchResult)
                                    {
                                        newsResults.Add((NewsSearchResult)res);
                                    }
                                }

                                containers.Add(new NewsSearchDataContainer(newsResults.ToArray(), start, count, totalResults));
                                break;

                            case "spelling":
                                List <SpellingSearchData> splResults = new List <SpellingSearchData>();
                                foreach (SearchData res in results)
                                {
                                    if (res is SpellingSearchData)
                                    {
                                        splResults.Add((SpellingSearchData)res);
                                    }
                                }

                                containers.Add(new SpellingSearchDataContainer(splResults.ToArray(), start, count, totalResults));
                                break;
                            }
                        }
                    }
                }
            }


            return(new SearchResult(containers.ToArray(), (SearchDownloadSettings)settings));
        }
Example #8
0
        private ImageSearchData ToBossImageSearchResult(XElement node)
        {
            SearchData result = this.ToSearchResult(node);

            if (result != null)
            {
                Uri           refererUrl                  = null;
                Uri           refererClickUrl             = null;
                Uri           tmbUrl                      = null;
                ImageFileType fileFormat                  = default(ImageFileType);
                long          size                        = 0;
                int           height                      = 0;
                int           width                       = 0;
                int           tmbHeight                   = 0;
                int           tmbWidth                    = 0;
                System.Globalization.CultureInfo convCult = new System.Globalization.CultureInfo("en-US");


                foreach (XElement prpNode in node.Elements())
                {
                    switch (prpNode.Name.LocalName)
                    {
                    case "refererurl":
                        refererUrl = new Uri(prpNode.Value);
                        break;

                    case "refererclickurl":
                        refererClickUrl = new Uri(prpNode.Value);
                        break;

                    case "size":
                        double srcSize = 0;
                        if (prpNode.Value.EndsWith("Bytes"))
                        {
                            double.TryParse(prpNode.Value.Replace("Bytes", ""), System.Globalization.NumberStyles.Any, convCult, out srcSize);
                        }
                        else if (prpNode.Value.EndsWith("KB"))
                        {
                            double.TryParse(prpNode.Value.Replace("KB", ""), System.Globalization.NumberStyles.Any, convCult, out srcSize);
                            srcSize *= 1024;
                        }
                        else if (prpNode.Value.EndsWith("MB"))
                        {
                            double.TryParse(prpNode.Value.Replace("MB", ""), System.Globalization.NumberStyles.Any, convCult, out srcSize);
                            srcSize *= Math.Pow(1024, 2);
                        }
                        size = Convert.ToInt64(srcSize);
                        break;

                    case "format":
                        switch (prpNode.Value.ToLower())
                        {
                        case "bmp":
                            fileFormat = ImageFileType.Bmp;
                            break;

                        case "gif":
                            fileFormat = ImageFileType.Gif;
                            break;

                        case "jpg":
                            fileFormat = ImageFileType.Jpeg;
                            break;

                        case "jpeg":
                            fileFormat = ImageFileType.Jpeg;
                            break;

                        case "png":
                            fileFormat = ImageFileType.Png;
                            break;

                        default:
                            fileFormat = ImageFileType.Any;
                            break;
                        }
                        break;

                    case "height":
                        int.TryParse(prpNode.Value, out height);
                        break;

                    case "width":
                        int.TryParse(prpNode.Value, out width);
                        break;

                    case "thumbnailurl":
                        if (prpNode.Value != string.Empty)
                        {
                            tmbUrl = new Uri(prpNode.Value);
                        }
                        break;

                    case "thumbnailwidth":
                        int.TryParse(prpNode.Value, out tmbWidth);
                        break;

                    case "thumbnailheight":
                        int.TryParse(prpNode.Value, out tmbHeight);
                        break;
                    }
                }

                return(new ImageSearchData(result, refererUrl, refererClickUrl, size, fileFormat, height, width, tmbUrl, tmbHeight, tmbWidth));
            }
            else
            {
                return(null);
            }
        }
 protected SearchDataContainer(SearchData[] results, SearchResultType type, int start, int count, long total)
     : base(results, start, count, total)
 {
     mType = type;
 }