// Get basic data for channel
        private void SetBasicChannelData(AdvancedRssChannel ChannelSource, RssChannel ChannelDest)
        {
            //Description
            if (ChannelSource.Description != null)
            {
                ChannelDest.Description = ChannelSource.Description;
            }

            //Title
            if (ChannelSource.Title != null)
            {
                ChannelDest.Title = ChannelSource.Title;
            }

            //Generator
            if (ChannelSource.Generator != null)
            {
                ChannelDest.Generator = ChannelSource.Generator;
            }

            //Language
            if (ChannelSource.Language != null && ChannelSource.Language != "")
            {
                //TODO: Cultura del feed
                //ChannelDest.Language =   .ChannelSource.Language;
            }

            //LastBuildDate
            if (ChannelSource.LastBuildDate != null)
            {
                ChannelDest.LastBuildDate = ChannelSource.LastBuildDate;
            }

            //AbsoluteUri
            if (ChannelSource.Link != null && ChannelSource.Link != "")
            {
                try
                {
                    ChannelDest.Link = new Uri(ChannelSource.Link);
                }
                catch
                {
                }
            }

            //PublicationDate
            if (ChannelSource.PubDate != null)
            {
                ChannelDest.PublicationDate = ChannelSource.PubDate;
            }
        }
        // Get basic data for channel
        private void GetBasicChannelData(RssChannel ChannelSource, AdvancedRssChannel ChannelDest)
        {
            //Description
            if (ChannelSource.Description != null)
            {
                ChannelDest.Description = ChannelSource.Description;
            }
            if (ChannelSource.Image != null)
            {
                ChannelDest.ImageUrl = ChannelSource.Image.Url.AbsoluteUri;
            }

            //Title
            if (ChannelSource.Title != null)
            {
                ChannelDest.Title = ChannelSource.Title;
            }

            //Generator
            if (ChannelSource.Generator != null)
            {
                ChannelDest.Generator = ChannelSource.Generator;
            }

            //Language
            if (ChannelSource.Language != null)
            {
                ChannelDest.Language = ChannelSource.Language.ToString();
            }

            //LastBuildDate
            if (ChannelSource.LastBuildDate != null)
            {
                ChannelDest.LastBuildDate = ChannelSource.LastBuildDate;
            }

            //AbsoluteUri
            if (ChannelSource.Link != null)
            {
                ChannelDest.Link = ChannelSource.Link.AbsoluteUri;
            }

            //PublicationDate
            if (ChannelSource.PublicationDate != null)
            {
                ChannelDest.PubDate = ChannelSource.PublicationDate;
            }
        }
        public AdvancedRssChannel GetChannel(Uri url)
        {
            AdvancedRssChannel rssChannel = new AdvancedRssChannel();

            rssChannel = GetRssChannelFromRss(url);

            return(rssChannel);

            //Select the syndication type
            //switch (Argotic.Common.SyndicationDiscovery.DetermineSyndicationFormat(url))
            //{
            //    case Argotic.Common..Rss: rssChannel = GetRssChannelFromRss(url); break;
            //    case Argotic.Common.SyndicationFormat.Atom: rssChannel = GetRssChannelFromAtom(url); break;
            //}

            //TODO
            //feed.SortAndFilter();
        }
        public void SetChannelRss(AdvancedRssChannel rssChannel, Stream OutputStream)
        {
            RssFeed ArgoticRssFeed = new RssFeed();

            SetBasicChannelData(rssChannel, ArgoticRssFeed.Channel);

            if (rssChannel.RssItems != null)
            {
                foreach (AdvancedRssItem RssItem in rssChannel.RssItems)
                {
                    //New item
                    RssItem ArgoRssItem = new RssItem();

                    //Basic item of the item
                    SetBasicItemData(RssItem, ArgoRssItem);

                    //Extention for Geocoding
                    SetBasicGeocodingExtension(RssItem, ArgoRssItem);

                    //Extention Slash for nomber of comment
                    SetSlashExtension(RssItem, ArgoRssItem);

                    //Yahoo extention for media content
                    if (RssItem.RssfeedItemsMedia != null)
                    {
                        YahooMediaSyndicationExtension yme = new YahooMediaSyndicationExtension();
                        SetYahooExtension(RssItem.RssfeedItemsMedia, yme);
                        ArgoRssItem.AddExtension(yme);
                    }

                    ArgoticRssFeed.Channel.AddItem(ArgoRssItem);
                }
            }

            ArgoticRssFeed.Save(OutputStream);
        }
        private AdvancedRssChannel GetRssChannelFromRss(Uri url)
        {
            AdvancedRssChannel Channel = new AdvancedRssChannel();

            //Argotic object declaration
            RssFeed ArgoticRssFeed = new RssFeed();

            //Load from uri
            try
            {
                ArgoticRssFeed.Load(url, null, null);
            }
            catch
            {
            }

            //Init Channel basic data
            GetBasicChannelData(ArgoticRssFeed.Channel, Channel);

            //Init data for each item
            foreach (RssItem item in ArgoticRssFeed.Channel.Items)
            {
                //Init basic data
                AdvancedRssItem RssItem = new AdvancedRssItem();
                GetBasicItemData(item, RssItem);

                //Extensions type content
                if (item.HasExtensions)
                {
                    //Dublin Core Extension
                    DublinCoreMetadataTermsSyndicationExtension BublinExtension =
                        (DublinCoreMetadataTermsSyndicationExtension)
                        item.FindExtension(DublinCoreMetadataTermsSyndicationExtension.MatchByType);
                    if (BublinExtension != null)
                    {
                        GetDublinCoreExtension(BublinExtension.Context, RssItem);
                    }

                    //Dublin Extension
                    DublinCoreMetadataTermsSyndicationExtension DublinExtension =
                        (DublinCoreMetadataTermsSyndicationExtension)
                        item.FindExtension(DublinCoreMetadataTermsSyndicationExtension.MatchByType);
                    if (DublinExtension != null)
                    {
                        GetDublinCoreExtension(DublinExtension.Context, RssItem);
                    }

                    //Slash Extension
                    SiteSummarySlashSyndicationExtension SlashExtension =
                        (SiteSummarySlashSyndicationExtension)
                        item.FindExtension(SiteSummarySlashSyndicationExtension.MatchByType);
                    if (SlashExtension != null)
                    {
                        GetSlashCoreExtension(SlashExtension.Context, RssItem);

                        /*-----------------------------------------------------------------------------------*/
                        /* TODO: Comment problem                                                             */
                        /* Arrangment for a stupid argotic buc, they wrote "coment" and no "comment" !!!!!!  */
                        /* The news module comment URL, it's the URL + #comments                             */
                        /*-----------------------------------------------------------------------------------*/
                        if (SlashExtension.Context.Comments >= 0 && RssItem.Commenturl == null)
                        {
                            RssItem.Commenturl = item.Link.AbsoluteUri + "#comments";
                        }
                        /*-----------------------------------------------------------------------------------*/
                    }

                    //Geo localization
                    BasicGeocodingSyndicationExtension GMLExtension =
                        (BasicGeocodingSyndicationExtension)
                        item.FindExtension(BasicGeocodingSyndicationExtension.MatchByType);
                    if (GMLExtension != null)
                    {
                        GetBasicGeocodingExtension(GMLExtension.Context, RssItem);
                    }

                    ////Yahoo media tag
                    YahooMediaSyndicationExtension YahooExtension =
                        (YahooMediaSyndicationExtension)item.FindExtension(YahooMediaSyndicationExtension.MatchByType);
                    if (YahooExtension != null)
                    {
                        RssItem.RssfeedItemsMedia = new List <AdvancedRssItemMedia>();
                        GetYahooExtension(YahooExtension.Context, RssItem.RssfeedItemsMedia);
                    }
                }

                Channel.RssItems.Add(RssItem);
            }

            return(Channel);
        }