From 1d8511895c1ef1876a02882f2d2ac2ae765ca644 Mon Sep 17 00:00:00 2001 From: 5elenay <5elenay@protonmail.com> Date: Mon, 23 Aug 2021 15:04:16 +0300 Subject: [PATCH] added edit server struct. --- channel.go | 9 ------ other.go | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ server.go | 12 ++++---- 3 files changed, 92 insertions(+), 15 deletions(-) diff --git a/channel.go b/channel.go index 2b24c69..2e5c769 100644 --- a/channel.go +++ b/channel.go @@ -158,15 +158,6 @@ func (c *Channel) Edit(ec *EditChannel) error { return err } - // Change channel struct - if ec.Name != "" { - c.Name = ec.Name - } - - if ec.Description != "" { - c.Description = ec.Description - } - return nil } diff --git a/other.go b/other.go index acfeaf5..5b00fe3 100644 --- a/other.go +++ b/other.go @@ -53,18 +53,30 @@ type EditChannel struct { // Set name for struct. func (ec *EditChannel) SetName(name string) *EditChannel { + if len(name) < 1 || len(name) > 32 { + return ec + } + ec.Name = name return ec } // Set description for struct. func (ec *EditChannel) SetDescription(desc string) *EditChannel { + if len(desc) > 1024 { + return ec + } + ec.Description = desc return ec } // Set icon for struct. func (ec *EditChannel) SetIcon(autumn_id string) *EditChannel { + if len(autumn_id) < 1 || len(autumn_id) > 128 { + return ec + } + ec.Icon = autumn_id return ec } @@ -78,3 +90,77 @@ func (ec *EditChannel) RemoveItem(item string) *EditChannel { ec.Remove = item return ec } + +// Edit server struct. +// Please see https://developers.revolt.chat/api/#tag/Server-Information/paths/~1servers~1:server/patch for more detail. +type EditServer struct { + Name string `json:"name,omitempty"` + Description string `json:"description,omitempty"` + Icon string `json:"icon,omitempty"` + Banner string `json:"banner,omitempty"` + Categories []*ServerCategory `json:"categories,omitempty"` + SystemMessages *SystemMessages `json:"system_messages,omitempty"` + Remove string `json:"remove,omitempty"` +} + +// Set name for struct +func (es *EditServer) SetName(name string) *EditServer { + if len(name) < 1 || len(name) > 32 { + return es + } + + es.Name = name + return es +} + +// Set description for struct. +func (es *EditServer) SetDescription(desc string) *EditServer { + if len(desc) > 1024 { + return es + } + + es.Description = desc + return es +} + +// Set icon for struct. +func (es *EditServer) SetIcon(autumn_id string) *EditServer { + if len(autumn_id) < 1 || len(autumn_id) > 128 { + return es + } + + es.Icon = autumn_id + return es +} + +// Set banner for struct. +func (es *EditServer) SetBanner(autumn_id string) *EditServer { + if len(autumn_id) < 1 || len(autumn_id) > 128 { + return es + } + + es.Banner = autumn_id + return es +} + +// Add a new category for struct. +func (es *EditServer) AddCategory(category *ServerCategory) *EditServer { + es.Categories = append(es.Categories, category) + return es +} + +// Set system messages for struct. +func (es *EditServer) SetSystemMessages(sm *SystemMessages) *EditServer { + es.SystemMessages = sm + return es +} + +// Set remove item. +func (es *EditServer) RemoveItem(item string) *EditServer { + if item != "Description" && item != "Banner" && item != "Icon" { + return es + } + + es.Remove = item + return es +} diff --git a/server.go b/server.go index 60a68c4..2705f29 100644 --- a/server.go +++ b/server.go @@ -17,7 +17,7 @@ type Server struct { Name string `json:"name"` Description string `json:"description"` ChannelIds []string `json:"channels"` - Categories []*ServerCategories `json:"categories"` + Categories []*ServerCategory `json:"categories"` SystemMessages *SystemMessages `json:"system_messages"` Roles map[string]interface{} `json:"roles"` DefaultPermissions []interface{} `json:"default_permissions"` @@ -26,7 +26,7 @@ type Server struct { } // Server categories struct. -type ServerCategories struct { +type ServerCategory struct { Id string `json:"id"` Title string `json:"title"` ChannelIds []string `json:"channels"` @@ -34,10 +34,10 @@ type ServerCategories struct { // System messages struct. type SystemMessages struct { - UserJoined string `json:"user_joined"` - UserLeft string `json:"user_left"` - UserKicked string `json:"user_kicker"` - UserBanned string `json:"user_banned"` + UserJoined string `json:"user_joined,omitempty"` + UserLeft string `json:"user_left,omitempty"` + UserKicked string `json:"user_kicker,omitempty"` + UserBanned string `json:"user_banned,omitempty"` } // Calculate creation date and edit the struct.