/// <summary> /// Парсить данные каталога. /// </summary> /// <param name="data">Данные.</param> /// <param name="link">Ссылка.</param> /// <returns>Результат.</returns> public CatalogTree ParseCatalogTree(CatalogEntity data, BoardLinkBase link) { var result = new CatalogTree() { Link = link, Posts = (data.Threads ?? new BoardPost2[0]).Select(p => Parse(p, new ThreadLink() { Engine = CoreConstants.Engine.Makaba, Board = data.Board, Thread = p.Number.TryParseWithDefault() }, true)).ToList(), Extensions = new List<PostTreeCollectionExtension>(), ParentLink = new BoardLink() { Engine = CoreConstants.Engine.Makaba, Board = data.Board } }; for (int i = 0; i < result.Posts.Count; i++) { result.Posts[i].Counter = i + 1; result.Posts[i].Flags |= PostFlags.ThreadPreview; result.Posts[i].Flags |= PostFlags.ThreadPreviewOpPost; } return result; }
/// <summary> /// Сохранить каталог. /// </summary> /// <param name="data">Данные.</param> /// <returns>Каталог.</returns> public async Task SaveCatalog(CatalogTree data) { var fileName = string.Format(CacheConsts.CacheFileTemplates[CacheConsts.Catalog], Services.GetServiceOrThrow<ILinkHashService>().GetLinkHash(data.Link)); var file = await GetCacheFile(fileName); var folder = await GetCacheFolder(); await WriteCacheXmlObject(file, folder, data, true); }