/// <summary> /// Парсить информацию о борде. /// </summary> /// <param name="category">Категория.</param> /// <param name="b">Информация.</param> /// <returns>Ссылка на борду.</returns> public BoardReference Parse(string category, MobileBoardInfo b) { var board = new BoardReference() { Category = category, DisplayName = b.Name, Link = new BoardLink() {Engine = CoreConstants.Engine.Makaba, Board = b.Id}, ShortName = b.Id, Extensions = new List<BoardReferenceExtension>(), IsAdult = "Взрослым".Equals(category) || CoreConstants.Makaba.AdultBoards.Contains(b.Id) }; var makabaExtension = new MakabaBoardReferenceExtension() { Bumplimit = b.BumpLimit, DefaultName = b.DefaultName, Icons = (b.Icons ?? new BoardIcon2[0]).Select(i => new MakabaIconReference() { Name = i.Name, Number = i.NumberInt, Url = i.Url }).ToList(), Pages = b.Pages, MaxComment = null, Sage = b.Sage != 0, Tripcodes = b.Tripcodes != 0, EnableLikes = b.EnableLikes != 0, EnableTags = b.EnableThreadTags != 0, }; board.Extensions.Add(makabaExtension); var postingExtension = new BoardReferencePostingExtension() { Capabilities = new List<PostingCapability>() }; foreach (var cr in CommonRoles) { switch (cr) { case PostingFieldSemanticRole.Comment: postingExtension.Capabilities.Add(new PostingCommentCapability() { MaxLength = null, MarkupType = PostingMarkupType.Makaba, Role = PostingFieldSemanticRole.Comment }); break; case PostingFieldSemanticRole.Captcha: postingExtension.Capabilities.Add(new PostingCaptchaCapability() { Role = PostingFieldSemanticRole.Captcha, CaptchaTypes = CaptchaTypes.DvachCaptcha }); break; case PostingFieldSemanticRole.Icon: if (makabaExtension.Icons.Count > 0) { postingExtension.Capabilities.Add(new PostingIconCapability() { Icons = makabaExtension.Icons.Select(i => new PostingCapabilityIcon() { Name = i.Name, Number = i.Number }).ToList(), Role = PostingFieldSemanticRole.Icon }); } break; case PostingFieldSemanticRole.MediaFile: postingExtension.Capabilities.Add(new PostingMediaFileCapability() { MaxFileCount = 4, Role = PostingFieldSemanticRole.MediaFile }); break; case PostingFieldSemanticRole.Title: if (!"b".Equals(b.Id, StringComparison.OrdinalIgnoreCase)) { postingExtension.Capabilities.Add(new PostingCapability() { Role = cr }); } break; case PostingFieldSemanticRole.ThreadTag: if (b.EnableThreadTags != 0) { postingExtension.Capabilities.Add(new PostingCapability() { Role = cr }); } break; /* case PostingFieldSemanticRole.SageFlag: if (makabaExtension.Sage) { postingExtension.Capabilities.Add(new PostingCapability() { Role = PostingFieldSemanticRole.SageFlag }); } break;*/ default: postingExtension.Capabilities.Add(new PostingCapability() { Role = cr }); break; } } board.Extensions.Add(postingExtension); return board; }
private BoardReference Parse(string category, MobileBoardInfo b) { var board = new BoardReference() { Category = category ?? "", DisplayName = b.Name, BoardLink = new BoardLink() { Engine = MakabaEngineId, Board = b.Id }, ShortName = b.Id ?? "", IsAdult = "Взрослым".Equals(category) || AdultBoards.Contains(b.Id), BumpLimit = b.BumpLimit, DefaultName = b.DefaultName, Icons = (b.Icons ?? new BoardIcon2[0]).Where(i => i != null).Select(i => new BoardIcon() { Name = i.Name, Id = i.Number, MediaLink = new EngineMediaLink() { Engine = MakabaEngineId, Uri = i.Url } }).OfType <IBoardIcon>().ToList(), Pages = b.Pages, SageEnabled = b.Sage != 0, TripCodesEnabled = b.Tripcodes != 0, LikesEnabled = b.EnableLikes != 0, ThreadTagsEnabled = b.EnableThreadTags != 0, PostingCapabilities = new List <IPostingCapability>() }; foreach (var cr in CommonRoles) { if (cr == PostingFieldSemanticRole.Comment) { board.PostingCapabilities.Add(new PostingCommentCapability() { MaxLength = null, MarkupType = MarkupTypes.Makaba, Role = PostingFieldSemanticRole.Comment }); } else if (cr == PostingFieldSemanticRole.Captcha) { board.PostingCapabilities.Add(new PostingCaptchaCapability() { Role = PostingFieldSemanticRole.Captcha, CaptchaTypes = new List <Guid>() { CaptchaTypes.DvachCaptcha } }); } else if (cr == PostingFieldSemanticRole.Icon) { if (board.Icons.Count > 0) { board.PostingCapabilities.Add(new PostingIconCapability() { Role = PostingFieldSemanticRole.Icon, Icons = board.Icons.Select(i => new PostingCapabilityIcon() { Name = i.Name, Id = i.Id }).OfType <IPostingCapabilityIcon>().ToList() }); } } else if (cr == PostingFieldSemanticRole.MediaFile) { if (!BoardsWithoutMedia.Contains(b.Id)) { board.PostingCapabilities.Add(new PostingMediaFileCapability() { Role = PostingFieldSemanticRole.MediaFile, MaxFileCount = 4 }); } } else if (cr == PostingFieldSemanticRole.Title) { if (!BoardsWithoutTitle.Contains(b.Id)) { board.PostingCapabilities.Add(new PostingCapability() { Role = PostingFieldSemanticRole.Title, }); } } else if (cr == PostingFieldSemanticRole.ThreadTag) { if (b.EnableThreadTags != 0) { board.PostingCapabilities.Add(new PostingCapability() { Role = PostingFieldSemanticRole.ThreadTag, }); } } else { board.PostingCapabilities.Add(new PostingCapability() { Role = cr, }); } } return(board); }