Codebase list golang-github-nlopes-slack / lintian-fixes/main item.go
lintian-fixes/main

Tree @lintian-fixes/main (Download .tar.gz)

item.go @lintian-fixes/main

0f19eb2
 
6edc895
e01e312
 
 
fdd62a3
 
 
6edc895
 
e01e312
6edc895
3e8aa56
 
 
 
 
 
6edc895
 
e01e312
 
 
6edc895
 
 
 
 
 
 
e01e312
 
 
6edc895
 
fdd62a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0f19eb2
8e499a5
0f19eb2
 
6aeef4e
8e499a5
6aeef4e
 
0f19eb2
 
 
6aeef4e
 
0f19eb2
 
 
6aeef4e
 
0f19eb2
 
8e499a5
6aeef4e
 
0f19eb2
package slack

const (
	TYPE_MESSAGE      = "message"
	TYPE_FILE         = "file"
	TYPE_FILE_COMMENT = "file_comment"
	TYPE_CHANNEL      = "channel"
	TYPE_IM           = "im"
	TYPE_GROUP        = "group"
)

// Item is any type of slack message - message, file, or file comment.
type Item struct {
	Type      string   `json:"type"`
	Channel   string   `json:"channel,omitempty"`
	Message   *Message `json:"message,omitempty"`
	File      *File    `json:"file,omitempty"`
	Comment   *Comment `json:"comment,omitempty"`
	Timestamp string   `json:"ts,omitempty"`
}

// NewMessageItem turns a message on a channel into a typed message struct.
func NewMessageItem(ch string, m *Message) Item {
	return Item{Type: TYPE_MESSAGE, Channel: ch, Message: m}
}

// NewFileItem turns a file into a typed file struct.
func NewFileItem(f *File) Item {
	return Item{Type: TYPE_FILE, File: f}
}

// NewFileCommentItem turns a file and comment into a typed file_comment struct.
func NewFileCommentItem(f *File, c *Comment) Item {
	return Item{Type: TYPE_FILE_COMMENT, File: f, Comment: c}
}

// NewChannelItem turns a channel id into a typed channel struct.
func NewChannelItem(ch string) Item {
	return Item{Type: TYPE_CHANNEL, Channel: ch}
}

// NewIMItem turns a channel id into a typed im struct.
func NewIMItem(ch string) Item {
	return Item{Type: TYPE_IM, Channel: ch}
}

// NewGroupItem turns a channel id into a typed group struct.
func NewGroupItem(ch string) Item {
	return Item{Type: TYPE_GROUP, Channel: ch}
}

// ItemRef is a reference to a message of any type. One of FileID,
// CommentId, or the combination of ChannelId and Timestamp must be
// specified.
type ItemRef struct {
	Channel   string `json:"channel"`
	Timestamp string `json:"timestamp"`
	File      string `json:"file"`
	Comment   string `json:"file_comment"`
}

// NewRefToMessage initializes a reference to to a message.
func NewRefToMessage(channel, timestamp string) ItemRef {
	return ItemRef{Channel: channel, Timestamp: timestamp}
}

// NewRefToFile initializes a reference to a file.
func NewRefToFile(file string) ItemRef {
	return ItemRef{File: file}
}

// NewRefToComment initializes a reference to a file comment.
func NewRefToComment(comment string) ItemRef {
	return ItemRef{Comment: comment}
}