diff --git a/endpoints.go b/endpoints.go index 6c84d37..682433d 100644 --- a/endpoints.go +++ b/endpoints.go @@ -83,6 +83,8 @@ var ( EndpointChannelMessage = func(cID, mID string) string { return EndpointChannels + cID + "/messages/" + mID } EndpointChannelMessageAck = func(cID, mID string) string { return EndpointChannels + cID + "/messages/" + mID + "/ack" } EndpointChannelMessagesBulkDelete = func(cID string) string { return EndpointChannel(cID) + "/messages/bulk_delete" } + EndpointChannelMessagesPins = func(cID string) string { return EndpointChannel(cID) + "/pins" } + EndpointChannelMessagePin = func(cID, mID string) string { return EndpointChannel(cID) + "/pins/" + mID } EndpointInvite = func(iID string) string { return EndpointAPI + "invite/" + iID } diff --git a/restapi.go b/restapi.go index 3596cac..85a4858 100644 --- a/restapi.go +++ b/restapi.go @@ -1180,6 +1180,39 @@ func (s *Session) ChannelMessagesBulkDelete(channelID string, messages []string) return } +// ChannelMessagePin pins a message within a given channel. +// channelID: The ID of a channel. +// messageID: The ID of a message. +func (s *Session) ChannelMessagePin(channelID, messageID string) (err error) { + + _, err = s.Request("PUT", EndpointChannelMessagePin(channelID, messageID), nil) + return +} + +// ChannelMessageUnpin unpins a message within a given channel. +// channelID: The ID of a channel. +// messageID: The ID of a message. +func (s *Session) ChannelMessageUnpin(channelID, messageID string) (err error) { + + _, err = s.Request("DELETE", EndpointChannelMessagePin(channelID, messageID), nil) + return +} + +// ChannelMessagesPinned returns an array of Message structures for pinned messages +// within a given channel +// channelID : The ID of a Channel. +func (s *Session) ChannelMessagesPinned(channelID string) (st []*Message, err error) { + + body, err := s.Request("GET", EndpointChannelMessagesPins(channelID), nil) + + if err != nil { + return + } + + err = unmarshal(body, &st) + return +} + // ChannelFileSend sends a file to the given channel. // channelID : The ID of a Channel. // io.Reader : A reader for the file contents.