fedilab-Android-App/app/src/main/java/app/fedilab/android/client/mastodon/entities/Instance.java

179 lines
6.0 KiB
Java

package app.fedilab.android.client.mastodon.entities;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/* Copyright 2021 Thomas Schneider
*
* This file is a part of Fedilab
*
* 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.
*
* Fedilab 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 Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
public class Instance implements Serializable {
@SerializedName("uri")
public String uri;
@SerializedName("title")
public String title;
@SerializedName("short_description")
public String short_description;
@SerializedName("description")
public String description;
@SerializedName("email")
public String email;
@SerializedName("version")
public String version;
@SerializedName("languages")
public List<String> languages;
@SerializedName("registrations")
public boolean registrations;
@SerializedName("rules")
public List<Rule> rules;
@SerializedName("approval_required")
public boolean approval_required;
@SerializedName("invites_enabled")
public boolean invites_enabled;
@SerializedName("stats")
public Stats stats;
@SerializedName("urls")
public Urls urls;
@SerializedName("thumbnail")
public String thumbnail;
@SerializedName("contact_account")
public Account contact_account;
@SerializedName("configuration")
public Configuration configuration;
public List<String> getMimeTypeAudio() {
List<String> mimeTypes = new ArrayList<>();
if (configuration == null || configuration.media_attachments == null) {
return mimeTypes;
}
for (String mimeType : configuration.media_attachments.supported_mime_types) {
if (mimeType.startsWith("audio")) {
mimeTypes.add(mimeType);
}
}
return mimeTypes;
}
public List<String> getMimeTypeVideo() {
List<String> mimeTypes = new ArrayList<>();
if (configuration == null || configuration.media_attachments == null) {
return mimeTypes;
}
for (String mimeType : configuration.media_attachments.supported_mime_types) {
if (mimeType.startsWith("video")) {
mimeTypes.add(mimeType);
}
}
return mimeTypes;
}
public List<String> getMimeTypeImage() {
List<String> mimeTypes = new ArrayList<>();
if (configuration == null || configuration.media_attachments == null) {
return mimeTypes;
}
for (String mimeType : configuration.media_attachments.supported_mime_types) {
if (mimeType.startsWith("image")) {
mimeTypes.add(mimeType);
}
}
return mimeTypes;
}
public List<String> getMimeTypeOther() {
List<String> mimeTypes = new ArrayList<>();
if (configuration == null || configuration.media_attachments == null) {
return mimeTypes;
}
for (String mimeType : configuration.media_attachments.supported_mime_types) {
if (!mimeType.startsWith("image") && !mimeType.startsWith("video") && !mimeType.startsWith("audio")) {
mimeTypes.add(mimeType);
}
}
return mimeTypes;
}
public static class Configuration implements Serializable {
@SerializedName("statuses")
public StatusesConf statusesConf;
@SerializedName("polls")
public PollsConf pollsConf;
@SerializedName("media_attachments")
public MediaConf media_attachments;
}
public static class StatusesConf implements Serializable {
@SerializedName("max_characters")
public int max_characters = 500;
@SerializedName("max_media_attachments")
public int max_media_attachments = 4;
@SerializedName("characters_reserved_per_url")
public int characters_reserved_per_url;
}
public static class MediaConf implements Serializable {
@SerializedName("supported_mime_types")
public List<String> supported_mime_types;
@SerializedName("image_size_limit")
public int image_size_limit;
@SerializedName("image_matrix_limit")
public int image_matrix_limit;
@SerializedName("video_size_limit")
public int video_size_limit;
@SerializedName("video_frame_rate_limit")
public int video_frame_rate_limit;
@SerializedName("video_matrix_limit")
public int video_matrix_limit;
}
public static class PollsConf implements Serializable {
@SerializedName("min_expiration")
public int min_expiration;
@SerializedName("max_options")
public int max_options = 4;
@SerializedName("max_option_chars")
public int max_option_chars = 25;
@SerializedName("max_expiration")
public int max_expiration;
}
public static class Stats implements Serializable {
@SerializedName("user_count")
public int user_count;
@SerializedName("status_count")
public int status_count;
@SerializedName("domain_count")
public int domain_count;
}
public static class Urls implements Serializable {
@SerializedName("streaming_api")
public String streaming_api;
}
public static class Rule implements Serializable {
@SerializedName("id")
public String id;
@SerializedName("text")
public String text;
public transient boolean isChecked = false;
}
}