X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi_common%2Fsrc%2Fsite.rs;h=a5b2afae297fccc7270210bbc7055fe99456751e;hb=HEAD;hp=faccb9f89e1c00b64a428af77bc4c0b4ffd4fee1;hpb=88a0d2feec3f9b4a06f2d8d090894111afcbd9e2;p=lemmy.git diff --git a/crates/api_common/src/site.rs b/crates/api_common/src/site.rs index faccb9f8..a5b2afae 100644 --- a/crates/api_common/src/site.rs +++ b/crates/api_common/src/site.rs @@ -2,44 +2,20 @@ use crate::sensitive::Sensitive; use lemmy_db_schema::{ newtypes::{CommentId, CommunityId, LanguageId, PersonId, PostId}, source::{instance::Instance, language::Language, tagline::Tagline}, - ListingType, - ModlogActionType, - RegistrationMode, - SearchType, - SortType, + ListingType, ModlogActionType, RegistrationMode, SearchType, SortType, }; use lemmy_db_views::structs::{ - CommentView, - CustomEmojiView, - LocalUserView, - PostView, - RegistrationApplicationView, - SiteView, + CommentView, CustomEmojiView, LocalUserView, PostView, RegistrationApplicationView, SiteView, }; use lemmy_db_views_actor::structs::{ - CommunityBlockView, - CommunityFollowerView, - CommunityModeratorView, - CommunityView, - PersonBlockView, - PersonView, + CommunityBlockView, CommunityFollowerView, CommunityModeratorView, CommunityView, + PersonBlockView, PersonView, }; use lemmy_db_views_moderator::structs::{ - AdminPurgeCommentView, - AdminPurgeCommunityView, - AdminPurgePersonView, - AdminPurgePostView, - ModAddCommunityView, - ModAddView, - ModBanFromCommunityView, - ModBanView, - ModFeaturePostView, - ModHideCommunityView, - ModLockPostView, - ModRemoveCommentView, - ModRemoveCommunityView, - ModRemovePostView, - ModTransferCommunityView, + AdminPurgeCommentView, AdminPurgeCommunityView, AdminPurgePersonView, AdminPurgePostView, + ModAddCommunityView, ModAddView, ModBanFromCommunityView, ModBanView, ModFeaturePostView, + ModHideCommunityView, ModLockPostView, ModRemoveCommentView, ModRemoveCommunityView, + ModRemovePostView, ModTransferCommunityView, }; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; @@ -50,6 +26,7 @@ use ts_rs::TS; #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Searches the site, given a query string, and some optional filters. pub struct Search { pub q: String, pub community_id: Option, @@ -66,6 +43,8 @@ pub struct Search { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The search response, containing lists of the return type possibilities +// TODO this should be redone as a list of tagged enums pub struct SearchResponse { pub type_: SearchType, pub comments: Vec, @@ -77,9 +56,11 @@ pub struct SearchResponse { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Does an apub fetch for an object. pub struct ResolveObject { + /// Can be the full url, or a shortened version like: !fediverse@lemmy.ml pub q: String, - pub auth: Sensitive, + pub auth: Option>, } #[skip_serializing_none] @@ -87,6 +68,7 @@ pub struct ResolveObject { #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] // TODO Change this to an enum +/// The response of an apub object fetch. pub struct ResolveObjectResponse { pub comment: Option, pub post: Option, @@ -98,6 +80,7 @@ pub struct ResolveObjectResponse { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Fetches the modlog. pub struct GetModlog { pub mod_person_id: Option, pub community_id: Option, @@ -111,6 +94,8 @@ pub struct GetModlog { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The modlog fetch response. +// TODO this should be redone as a list of tagged enums pub struct GetModlogResponse { pub removed_posts: Vec, pub locked_posts: Vec, @@ -133,6 +118,7 @@ pub struct GetModlogResponse { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Creates a site. Should be done after first running lemmy. pub struct CreateSite { pub name: String, pub sidebar: Option, @@ -140,6 +126,7 @@ pub struct CreateSite { pub icon: Option, pub banner: Option, pub enable_downvotes: Option, + pub enable_federated_downvotes: Option, pub enable_nsfw: Option, pub community_creation_admin_only: Option, pub require_email_verification: Option, @@ -167,7 +154,6 @@ pub struct CreateSite { pub rate_limit_search_per_second: Option, pub federation_enabled: Option, pub federation_debug: Option, - pub federation_worker_count: Option, pub captcha_enabled: Option, pub captcha_difficulty: Option, pub allowed_instances: Option>, @@ -181,47 +167,79 @@ pub struct CreateSite { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Edits a site. pub struct EditSite { pub name: Option, pub sidebar: Option, + /// A shorter, one line description of your site. pub description: Option, + /// A url for your site's icon. pub icon: Option, + /// A url for your site's banner. pub banner: Option, + /// Whether to enable downvotes. pub enable_downvotes: Option, + /// Whether to allow downvotes from federated sites. + pub enable_federated_downvotes: Option, + /// Whether to enable NSFW. pub enable_nsfw: Option, + /// Limits community creation to admins only. pub community_creation_admin_only: Option, + /// Whether to require email verification. pub require_email_verification: Option, + /// Your application question form. This is in markdown, and can be many questions. pub application_question: Option, + /// Whether your instance is public, or private. pub private_instance: Option, + /// The default theme. Usually "browser" pub default_theme: Option, pub default_post_listing_type: Option, + /// An optional page of legal information pub legal_information: Option, + /// Whether to email admins when receiving a new application. pub application_email_admins: Option, + /// Whether to hide moderator names from the modlog. pub hide_modlog_mod_names: Option, + /// A list of allowed discussion languages. pub discussion_languages: Option>, + /// A regex string of items to filter. pub slur_filter_regex: Option, + /// The max length of actor names. pub actor_name_max_length: Option, + /// The number of messages allowed in a given time frame. pub rate_limit_message: Option, pub rate_limit_message_per_second: Option, + /// The number of posts allowed in a given time frame. pub rate_limit_post: Option, pub rate_limit_post_per_second: Option, + /// The number of registrations allowed in a given time frame. pub rate_limit_register: Option, pub rate_limit_register_per_second: Option, + /// The number of image uploads allowed in a given time frame. pub rate_limit_image: Option, pub rate_limit_image_per_second: Option, + /// The number of comments allowed in a given time frame. pub rate_limit_comment: Option, pub rate_limit_comment_per_second: Option, + /// The number of searches allowed in a given time frame. pub rate_limit_search: Option, pub rate_limit_search_per_second: Option, + /// Whether to enable federation. pub federation_enabled: Option, + /// Enables federation debugging. pub federation_debug: Option, - pub federation_worker_count: Option, + /// Whether to enable captchas for signups. pub captcha_enabled: Option, + /// The captcha difficulty. Can be easy, medium, or hard pub captcha_difficulty: Option, + /// A list of allowed instances. If none are set, federation is open. pub allowed_instances: Option>, + /// A list of blocked instances. pub blocked_instances: Option>, + /// A list of taglines shown at the top of the front page. pub taglines: Option>, pub registration_mode: Option, + /// Whether to email admins for new reports. pub reports_email_admins: Option, pub auth: Sensitive, } @@ -230,6 +248,7 @@ pub struct EditSite { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Fetches the site. pub struct GetSite { pub auth: Option>, } @@ -237,42 +256,53 @@ pub struct GetSite { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The response for a site. pub struct SiteResponse { pub site_view: SiteView, + pub taglines: Vec, } #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// An expanded response for a site. pub struct GetSiteResponse { pub site_view: SiteView, pub admins: Vec, - pub online: usize, pub version: String, pub my_user: Option, pub all_languages: Vec, pub discussion_languages: Vec, + /// A list of taglines shown at the top of the front page. pub taglines: Vec, + /// A list of custom emojis your site supports. pub custom_emojis: Vec, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] -pub struct GetFederatedInstances {} +/// Fetches the federated instances for your site. +pub struct GetFederatedInstances { + pub auth: Option>, +} #[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// A response of federated instances. pub struct GetFederatedInstancesResponse { - pub federated_instances: Option, // Federation may be disabled + /// Optional, because federation may be disabled. + pub federated_instances: Option, } #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Your user info. pub struct MyUserInfo { pub local_user_view: LocalUserView, pub follows: Vec, @@ -285,6 +315,7 @@ pub struct MyUserInfo { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Leaves the admin team. pub struct LeaveAdmin { pub auth: Sensitive, } @@ -292,6 +323,7 @@ pub struct LeaveAdmin { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// A list of federated instances. pub struct FederatedInstances { pub linked: Vec, pub allowed: Vec, @@ -302,6 +334,7 @@ pub struct FederatedInstances { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Purges a person from the database. This will delete all content attached to that person. pub struct PurgePerson { pub person_id: PersonId, pub reason: Option, @@ -312,6 +345,7 @@ pub struct PurgePerson { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Purges a community from the database. This will delete all content attached to that community. pub struct PurgeCommunity { pub community_id: CommunityId, pub reason: Option, @@ -322,6 +356,7 @@ pub struct PurgeCommunity { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Purges a post from the database. This will delete all content attached to that post. pub struct PurgePost { pub post_id: PostId, pub reason: Option, @@ -332,15 +367,17 @@ pub struct PurgePost { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Purges a comment from the database. This will delete all content attached to that comment. pub struct PurgeComment { pub comment_id: CommentId, pub reason: Option, pub auth: Sensitive, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The response for purged items. pub struct PurgeItemResponse { pub success: bool, } @@ -349,6 +386,7 @@ pub struct PurgeItemResponse { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Fetches a list of registration applications. pub struct ListRegistrationApplications { /// Only shows the unread applications (IE those without an admin actor) pub unread_only: Option, @@ -360,6 +398,7 @@ pub struct ListRegistrationApplications { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The list of registration applications. pub struct ListRegistrationApplicationsResponse { pub registration_applications: Vec, } @@ -368,6 +407,7 @@ pub struct ListRegistrationApplicationsResponse { #[derive(Debug, Serialize, Deserialize, Clone, Default)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Approves a registration application. pub struct ApproveRegistrationApplication { pub id: i32, pub approve: bool, @@ -378,6 +418,7 @@ pub struct ApproveRegistrationApplication { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The response of an action done to a registration application. pub struct RegistrationApplicationResponse { pub registration_application: RegistrationApplicationView, } @@ -385,6 +426,7 @@ pub struct RegistrationApplicationResponse { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// Gets a count of unread registration applications. pub struct GetUnreadRegistrationApplicationCount { pub auth: Sensitive, } @@ -392,6 +434,7 @@ pub struct GetUnreadRegistrationApplicationCount { #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] +/// The count of unread registration applications. pub struct GetUnreadRegistrationApplicationCountResponse { pub registration_applications: i64, }