protected internal virtual Tuple<string, Userpic> CreateUserpicTuple(EntryBase e)
 {
     if(e.PosterUserpic != null && !String.IsNullOrWhiteSpace(e.PosterUserpic.Url))
         return Tuple.Create(e.Poster.Username, e.PosterUserpic);
     else
         return null;
 }
        public bool UpdateWith(EntryBase target, EntryBase source)
        {
            if(source == null || target == null)
                throw new ArgumentNullException();

            if(target.Id != 0 && target.Id != source.Id)
                throw new ArgumentException("Ids should match.");

            bool updated = false;

            updated |= UpdateStringProperty(source.Text, target.Text, s => target.Text = s);
            updated |= UpdateStringProperty(source.Subject, target.Subject, s => target.Subject = s);
            updated |= UpdateStringProperty(source.Url, target.Url, s => target.Url = s);

            if(String.IsNullOrEmpty(target.Poster.Username) && source.Poster != null && !String.IsNullOrEmpty(source.Poster.Username))
            {
                target.Poster = source.Poster;
                updated = true;
            }

            if(!target.PosterUserpicSpecified && source.PosterUserpicSpecified)
            {
                target.PosterUserpic = source.PosterUserpic;
                updated = true;
            }

            if(target.Date == null && source.Date != null)
            {
                target.Date = source.Date;
                updated = true;
            }

            return updated;
        }
        protected internal virtual IEnumerable<string> EnumerateFiles(EntryBase e)
        {
            if (e.Text == null)
                yield break;

            string[] urls;

            urls = _fileExtractor.GetImagesURLs(e.Text);
            foreach(string url in urls)
                yield return url;
        }