/// <summary> /// Конструктор. /// </summary> /// <param name="extension">Расширение.</param> /// <param name="engine">Движок.</param> public MakabaBoardInfo(MakabaBoardReferenceExtension extension, string engine) { if (extension == null) throw new ArgumentNullException(nameof(extension)); this.extension = extension; if (engine != null && extension.Icons != null) { foreach (var icon in extension.Icons.Where(i => i != null).OrderBy(i => i.Number)) { Icons.Add(new MakabaBoardInfoIcon(icon, engine)); } } }
/// <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; }