/* * Overchan Android (Meta Imageboard Client) * Copyright (C) 2014-2016 miku-nyan <https://github.com/miku-nyan> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package nya.miku.wishmaster.api.models; import java.io.Serializable; import nya.miku.wishmaster.api.ChanModule; import com.esotericsoftware.kryo.serializers.TaggedFieldSerializer.Tag; /** * Модель доски (форума) на имиджборде * @author miku-nyan * */ public class BoardModel implements Serializable { private static final long serialVersionUID = 1L; /** Название имиджборды (то, что возвращает {@link ChanModule#getChanName()} модуль данной имиджборды). */ @Tag(0) public String chan; /** Код доски (короткое название), например: "b", "s", "int". */ @Tag(1) public String boardName; /** Описание доски (полное название), например: "Бред", "Программы", "International". */ @Tag(2) public String boardDescription; /** Категория, к которой относится доска (в случае деления досок по категориям). Может принимать null. */ @Tag(3) public String boardCategory; /** Должно принимать true, если на доске содержится контент 18+ или доска является немодерируемой. */ @Tag(4) public boolean nsfw; /** Должно принимать true, если на данной доске гарантируется, что все (реальные) имена файлов вложений и превью различны. */ @Tag(5) public boolean uniqueAttachmentNames; /** Часовой пояс, используемый на данной доске, например: "GMT+3", "US/Eastern". */ @Tag(6) public String timeZoneId; /** Имя отправителя, используемое на данной доске по умолчанию, например: "Аноним". */ @Tag(7) public String defaultUserName; /** Количество постов до бамп лимита (после которого новые посты без сажи не поднимают тред наверх). */ @Tag(8) public int bumpLimit; /** Должно принимать true, если данная доска доступна только для чтения. */ @Tag(9) public boolean readonlyBoard; /** Должно принимать true, если на этой доске необходимо прикрепить файл, чтобы создать тред. Только если {@link #readonlyBoard} равно false. */ @Tag(10) public boolean requiredFileForNewThread; /** Должно принимать true, если на доске можно удалять свои посты. Только если {@link #readonlyBoard} равно false. */ @Tag(11) public boolean allowDeletePosts; /** Должно принимать true, если на доске можно удалять вложения в своих постах. Только если {@link #readonlyBoard} равно false. */ @Tag(12) public boolean allowDeleteFiles; /** Разрешено ли на данной доске жаловаться на сообщения (сообщить модератору), одно из константных значений: * {@link #REPORT_NOT_ALLOWED}, {@link #REPORT_SIMPLE}, {@link #REPORT_WITH_COMMENT} */ @Tag(31) public int allowReport; /** Должно принимать true, если на доске можно указывать имя отправителя. Только если {@link #readonlyBoard} равно false. */ @Tag(13) public boolean allowNames; /** Должно принимать true, если на доске можно указывать темы сообщенй. Только если {@link #readonlyBoard} равно false. */ @Tag(14) public boolean allowSubjects; /** Должно принимать true, если на доске можно отправлять посты с сажей (не поднимая тред). Только если {@link #readonlyBoard} равно false. */ @Tag(15) public boolean allowSage; /** Должно принимать true, если на доске можно указывать e-mail адрес отправителя. Только если {@link #readonlyBoard} равно false. */ @Tag(16) public boolean allowEmails; /** Должно принимать true, если на доске при отправке поста с сажей невозможно указать e-mail. Только если {@link #readonlyBoard} равно false. */ @Tag(17) public boolean ignoreEmailIfSage; @Deprecated @Tag(18) public boolean allowWatermark; /** Должно принимать true, если на доске можно отправить пост с дополнительным модификатором (по умолчанию "ОП треда"). * Только если {@link #readonlyBoard} равно false. */ @Tag(19) public boolean allowCustomMark; /** Описание дополнительного модификатора (только если {@link #allowCustomMark} равно true), по умолчанию "ОП треда". */ @Tag(32) public String customMarkDescription; /** Должно принимать true, если на доске нельзя постить одинаковые файлы, но можно это обойти, добавив в хвост несколько случайных байт * (произвольных хэш). Только если {@link #readonlyBoard} равно false. */ @Tag(20) public boolean allowRandomHash; /** Должно принимать true, если на доске при отправке сообщения можно выбрать из списка значок (например, политических предпочтений). * Только если {@link #readonlyBoard} равно false. */ @Tag(21) public boolean allowIcons; /** Массив с описаниями доступных значков. Только если {@link #allowIcons} равно true, в противном случае может принимать null. */ @Tag(22) public String[] iconDescriptions; /** Максимальное количество файлов, которое можно прикрепить к посту. Только если {@link #readonlyBoard} равно false. * Если {@link #requiredFileForNewThread} равно true, должно быть больше нуля. */ @Tag(23) public int attachmentsMaxCount; /** Массив с фильтрами допустимых форматов (расширений) прикрепляемых файлов, например: ["jpg", "png", "gif"]. * Значение null означает, что допустимо прикреплять любые файлы. * Только если {@link #readonlyBoard} равно false. */ @Tag(24) public String[] attachmentsFormatFilters; /** Тип допустимой разметки в теле отправляемого поста, * одно из константных значений: {@link #MARK_NOMARK}, {@link #MARK_WAKABAMARK}, {@link #MARK_BBCODE}. * Только если {@link #readonlyBoard} равно false. */ @Tag(30) public int markType; /** Номер первой (нулевой) страницы на данной доске. */ @Tag(25) public int firstPage; /** Номер последней страницы на данной доске. * Если не удаётся определить, или информация не предоставляется имиджбордой, может принимать значение {@link #LAST_PAGE_UNDEFINED}. */ @Tag(26) public int lastPage; /** Должно принимать true, если на данной доске реализована функция поиска по всей доске. */ @Tag(27) public boolean searchAllowed; /** Должно принимать true, если на данной доске реализована функция каталога. */ @Tag(28) public boolean catalogAllowed; /** Массив с описаниями способов показа каталога, например: ["Сортировка по бампам", "Сортировка по размеру изображения"]. * Только если {@link #catalogAllowed} равно true, в противном случае может принимать null. */ @Tag(29) public String[] catalogTypeDescriptions; /** Константное значение для обозначения номера последней страницы, если настоящий номер неизвестен. */ public static final int LAST_PAGE_UNDEFINED = Integer.MAX_VALUE; /** Константное значение для обозначения типа допустимой разметки при отправке поста - без разметки */ public static final int MARK_NOMARK = 0; /** Константное значение для обозначения типа допустимой разметки при отправке поста - модифицированный wakabamark.<br> * *italic* **bold** %%spoiler%% strike^H^H^H^H^H^H */ public static final int MARK_WAKABAMARK = 1; /** Константное значение для обозначения типа допустимой разметки при отправке поста - BBCode.<br> * [i]italic[/i] [b]bold[/b] [u]underline[/u] [spoiler]spoiler[/spoiler] [s]strike[/s] */ public static final int MARK_BBCODE = 2; /** Константное значение для обозначения типа допустимой разметки при отправке поста - 4chan.<br> * *italic* **bold** __underline__ [spoiler]spoiler[/spoiler] */ public static final int MARK_4CHAN = 3; /** Константное значение, если на данной доске нет возможности пожаловаться на сообщения */ public static final int REPORT_NOT_ALLOWED = 0; /** Константное значение, если на данной доске при репорте есть возможность указать только номер сообщения */ public static final int REPORT_SIMPLE = 1; /** Константное значение, если на данной доске при репорте есть возможность указать номер сообщения и комментарий */ public static final int REPORT_WITH_COMMENT = 2; }