use super::*;
client_api! {
action: GetGuildList,
api_fn: get_guild_list,
service: chat,
}
client_api! {
action: GetGuild,
api_fn: get_guild,
service: chat,
}
#[into_request("CreateGuildRequest")]
#[derive(Debug, new)]
pub struct CreateGuild {
guild_name: String,
#[new(default)]
picture_url: Hmc,
#[new(default)]
metadata: Option<Metadata>,
}
impl CreateGuild {
pub fn picture(mut self, picture: impl Into<Hmc>) -> Self {
self.picture_url = picture.into();
self
}
pub fn metadata(mut self, metadata: impl Into<Option<Metadata>>) -> Self {
self.metadata = metadata.into();
self
}
}
client_api! {
action: CreateGuild,
api_fn: create_guild,
service: chat,
}
#[derive(Debug, new)]
pub struct GuildList {
guild_id: u64,
homeserver: Uri,
}
impl IntoRequest<AddGuildToGuildListRequest> for GuildList {
fn into_request(self) -> Request<AddGuildToGuildListRequest> {
AddGuildToGuildListRequest {
guild_id: self.guild_id,
homeserver: self.homeserver.to_string(),
}
.into_request()
}
}
client_api! {
action: AddGuildToGuildList,
api_fn: add_guild_to_guild_list,
service: chat,
}
impl IntoRequest<RemoveGuildFromGuildListRequest> for GuildList {
fn into_request(self) -> Request<RemoveGuildFromGuildListRequest> {
RemoveGuildFromGuildListRequest {
guild_id: self.guild_id,
homeserver: self.homeserver.to_string(),
}
.into_request()
}
}
client_api! {
action: RemoveGuildFromGuildList,
api_fn: remove_guild_from_guild_list,
service: chat,
}
#[into_request("UpdateGuildInformationRequest")]
#[derive(Debug, new)]
pub struct UpdateGuildInformation {
guild_id: u64,
#[new(default)]
new_guild_name: String,
#[new(default)]
new_guild_picture: Hmc,
#[new(default)]
metadata: Option<Metadata>,
#[new(default)]
update_guild_name: bool,
#[new(default)]
update_guild_picture: bool,
#[new(default)]
update_metadata: bool,
}
impl UpdateGuildInformation {
pub fn new_guild_name(mut self, guild_name: impl Into<String>) -> Self {
self.new_guild_name = guild_name.into();
self.update_guild_name = true;
self
}
pub fn new_guild_picture(mut self, guild_picture: impl Into<Hmc>) -> Self {
self.new_guild_picture = guild_picture.into();
self.update_guild_picture = true;
self
}
pub fn new_metadata(mut self, metadata: impl Into<Option<Metadata>>) -> Self {
self.metadata = metadata.into();
self.update_metadata = true;
self
}
}
client_api! {
request: UpdateGuildInformationRequest,
api_fn: update_guild_information,
service: chat,
}
client_api! {
request: DeleteGuildRequest,
api_fn: delete_guild,
service: chat,
}
client_api! {
action: JoinGuild,
api_fn: join_guild,
service: chat,
}
client_api! {
request: LeaveGuildRequest,
api_fn: leave_guild,
service: chat,
}
client_api! {
action: PreviewGuild,
api_fn: preview_guild,
service: chat,
}