Exemplo n.º 1
0
        /// <summary>
        /// Распарсить.
        /// </summary>
        /// <param name="source">Источник.</param>
        /// <returns>Результат.</returns>
        public IBoardPostCollectionEtag Parse(CatalogData source)
        {
            var posts  = source.Entity.Threads.OrderBy(p => p.Number.TryParseWithDefault());
            var result = new BoardPostCollection()
            {
                EntityType = PostStoreEntityType.Catalog,
                Etag       = source.Etag,
                Info       = GetEntityModel(source.Entity, source.Link),
                Link       = source.Link,
                ParentLink = source.Link?.GetBoardLink(),
                Posts      = posts.WithCounter(1).Select(p => _postsParser.Parse(new BoardPost2WithParentLink()
                {
                    Counter    = p.Key,
                    ParentLink = new ThreadLink()
                    {
                        Board = source.Link.Board, Engine = source.Link.Engine, OpPostNum = p.Value.Number.TryParseWithDefault()
                    },
                    Post       = p.Value,
                    EntityType = PostStoreEntityType.CatalogPost,
                    LoadedTime = source.LoadedTime,
                })).ToList()
            };

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Распарсить.
        /// </summary>
        /// <param name="source">Источник.</param>
        /// <returns>Результат.</returns>
        public IBoardPostCollectionEtag Parse(PartialThreadData source)
        {
            var   posts = source.Posts.OrderBy(p => p.Number.TryParseWithDefault());
            ILink parentLink;

            switch (source.Link)
            {
            case PostLink pl:
                parentLink = pl.GetThreadLink();
                break;

            default:
                parentLink = source.Link?.GetBoardLink();
                break;
            }
            var result = new BoardPostCollection()
            {
                EntityType = PostStoreEntityType.Thread,
                Etag       = source.Etag,
                Info       = null,
                Link       = source.Link,
                ParentLink = parentLink,
                Posts      = posts.WithCounter(1).Select(p => _postsParser.Parse(new BoardPost2WithParentLink()
                {
                    Counter    = p.Key,
                    ParentLink = new ThreadLink()
                    {
                        Board = source.Link.Board, Engine = source.Link.Engine, OpPostNum = source.Link.OpPostNum
                    },
                    Post       = p.Value,
                    LoadedTime = source.LoadedTime,
                    EntityType = PostStoreEntityType.Post
                })).ToList()
            };

            return(result);
        }