diff --git a/mastodon/info.py b/mastodon/info.py index 2b97559..913deaf 100644 --- a/mastodon/info.py +++ b/mastodon/info.py @@ -33,40 +33,42 @@ class InstanceInfo: def from_api(cls, data: dict[str, Any]) -> "InstanceInfo": config: dict[str, Any] = {} - if "statuses" in data: - statuses_config: dict[str, Any] = data.get("statuses", {}) - if "max_characters" in statuses_config: - config["max_characters"] = statuses_config["max_characters"] - if "max_media_attachments" in statuses_config: - config["max_media_attachments"] = statuses_config[ - "max_media_attachments" - ] - if "characters_reserved_per_url" in statuses_config: - config["characters_reserved_per_url"] = statuses_config[ - "characters_reserved_per_url" - ] - - # glitch content type - if "supported_mime_types" in statuses_config: - text_mimes: list[str] = statuses_config["supported_mime_types"] - - if "text/x.misskeymarkdown" in text_mimes: - config["text_format"] = "text/x.misskeymarkdown" - elif "text/markdown" in text_mimes: - config["text_format"] = "text/markdown" - elif "text/plain" in text_mimes: - config["text_format"] = "text/plain" - else: - raise ValueError( - f"Unsupported instance 'text_format' type '{text_mimes}'" - ) - - if "media_attachments" in data: - media_config: dict[str, Any] = data["media_attachments"] - if "image_size_limit" in media_config: - config["image_size_limit"] = media_config["image_size_limit"] - if "video_size_limit" in media_config: - config["video_size_limit"] = media_config["video_size_limit"] + if "configuration" in data: + configuration: dict[str, Any] = data.get("configuration", {}) + if "statuses" in configuration: + statuses_config: dict[str, Any] = configuration.get("statuses", {}) + if "max_characters" in statuses_config: + config["max_characters"] = statuses_config["max_characters"] + if "max_media_attachments" in statuses_config: + config["max_media_attachments"] = statuses_config[ + "max_media_attachments" + ] + if "characters_reserved_per_url" in statuses_config: + config["characters_reserved_per_url"] = statuses_config[ + "characters_reserved_per_url" + ] + + # glitch content type + if "supported_mime_types" in statuses_config: + text_mimes: list[str] = statuses_config["supported_mime_types"] + + if "text/x.misskeymarkdown" in text_mimes: + config["text_format"] = "text/x.misskeymarkdown" + elif "text/markdown" in text_mimes: + config["text_format"] = "text/markdown" + elif "text/plain" in text_mimes: + config["text_format"] = "text/plain" + else: + raise ValueError( + f"Unsupported instance 'text_format' type '{text_mimes}'" + ) + + if "media_attachments" in configuration: + media_config: dict[str, Any] = configuration["media_attachments"] + if "image_size_limit" in media_config: + config["image_size_limit"] = media_config["image_size_limit"] + if "video_size_limit" in media_config: + config["video_size_limit"] = media_config["video_size_limit"] # *oma extensions if "max_toot_chars" in data: