diff --git a/message.go b/message.go index 63e7d3e..59d0297 100644 --- a/message.go +++ b/message.go @@ -30,11 +30,41 @@ type Message struct { } // An Attachment stores data for message attachments. -type Attachment struct { //TODO figure this out +type Attachment struct { + ID string `json:"id"` + URL string `json:"url"` + ProxyURL string `json:"proxy_url"` + Width int `json:"width"` + Height int `json:"height"` + Filename string `json:"filename"` + Size int `json:"size"` } // An Embed stores data for message embeds. -type Embed struct { // TODO figure this out +type Embed struct { + URL string `json:"url"` + Type string `json:"type"` + Title string `json:"title"` + Description string `json:"description"` + Thumbnail *struct { + URL string `json:"url"` + ProxyURL string `json:"proxy_url"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"thumbnail"` + Provider *struct { + URL string `json:"url"` + Name string `json:"name"` + } `json:"provider"` + Author *struct { + URL string `json:"url"` + Name string `json:"name"` + } `json:"author"` + Video *struct { + URL string `json:"url"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"video"` } // ContentWithMentionsReplaced will replace all @ mentions with the diff --git a/restapi.go b/restapi.go index c54937e..6dc1425 100644 --- a/restapi.go +++ b/restapi.go @@ -189,28 +189,6 @@ func (s *Session) User(userID string) (st *User, err error) { return } -// UserUpdate updates a users settings. -// userID : A user ID or "@me" which is a shortcut of current user ID -func (s *Session) UserUpdate(userID, email, password, username, avatar, newPassword string) (st *User, err error) { - - // NOTE: Avatar must be either the hash/id of existing Avatar or - // data:image/png;base64,BASE64_STRING_OF_NEW_AVATAR_PNG - // to set a new avatar. - // If left blank, avatar will be set to null/blank - - data := struct { - Email string `json:"email"` - Password string `json:"password"` - Username string `json:"username"` - Avatar string `json:"avatar,omitempty"` - NewPassword string `json:"new_password,omitempty"` - }{email, password, username, avatar, newPassword} - - body, err := s.Request("PATCH", USER(userID), data) - err = json.Unmarshal(body, &st) - return -} - // UserAvatar returns an image.Image of a users Avatar // userID : A user ID or "@me" which is a shortcut of current user ID func (s *Session) UserAvatar(userID string) (img image.Image, err error) { @@ -227,49 +205,62 @@ func (s *Session) UserAvatar(userID string) (img image.Image, err error) { return } +// UserUpdate updates a users settings. +func (s *Session) UserUpdate(email, password, username, avatar, newPassword string) (st *User, err error) { + + // NOTE: Avatar must be either the hash/id of existing Avatar or + // data:image/png;base64,BASE64_STRING_OF_NEW_AVATAR_PNG + // to set a new avatar. + // If left blank, avatar will be set to null/blank + + data := struct { + Email string `json:"email"` + Password string `json:"password"` + Username string `json:"username"` + Avatar string `json:"avatar,omitempty"` + NewPassword string `json:"new_password,omitempty"` + }{email, password, username, avatar, newPassword} + + body, err := s.Request("PATCH", USER("@me"), data) + err = json.Unmarshal(body, &st) + return +} + // UserSettings returns the settings for a given user -// userID : A user ID or "@me" which is a shortcut of current user ID -// This seems to only return a result for "@me" func (s *Session) UserSettings(userID string) (st *Settings, err error) { - body, err := s.Request("GET", USER_SETTINGS(userID), nil) + body, err := s.Request("GET", USER_SETTINGS("@me"), nil) err = json.Unmarshal(body, &st) return } // UserChannels returns an array of Channel structures for all private -// channels for a user -// userID : A user ID or "@me" which is a shortcut of current user ID -func (s *Session) UserChannels(userID string) (st []*Channel, err error) { +// channels. +func (s *Session) UserChannels() (st []*Channel, err error) { - body, err := s.Request("GET", USER_CHANNELS(userID), nil) + body, err := s.Request("GET", USER_CHANNELS("@me"), nil) err = json.Unmarshal(body, &st) return } // UserChannelCreate creates a new User (Private) Channel with another User -// userID : A user ID or "@me" which is a shortcut of current user ID // recipientID : A user ID for the user to which this channel is opened with. -func (s *Session) UserChannelCreate(userID, recipientID string) (st *Channel, err error) { +func (s *Session) UserChannelCreate(recipientID string) (st *Channel, err error) { data := struct { RecipientID string `json:"recipient_id"` }{recipientID} - body, err := s.Request( - "POST", - USER_CHANNELS(userID), - data) + body, err := s.Request("POST", USER_CHANNELS("@me"), data) err = json.Unmarshal(body, &st) return } -// UserGuilds returns an array of Guild structures for all guilds for a given user -// userID : A user ID or "@me" which is a shortcut of current user ID -func (s *Session) UserGuilds(userID string) (st []*Guild, err error) { +// UserGuilds returns an array of Guild structures for all guilds. +func (s *Session) UserGuilds() (st []*Guild, err error) { - body, err := s.Request("GET", USER_GUILDS(userID), nil) + body, err := s.Request("GET", USER_GUILDS("@me"), nil) err = json.Unmarshal(body, &st) return }