Skip to content

Commit

Permalink
Merge pull request #989 from Yohan460/include_num_members-support
Browse files Browse the repository at this point in the history
Add include_num_members support to conversation.info request
  • Loading branch information
kanata2 committed Dec 16, 2022
2 parents 58dcbfd + ba92d34 commit 617bdc1
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 7 deletions.
29 changes: 23 additions & 6 deletions conversation.go
Expand Up @@ -2,6 +2,7 @@ package slack

import (
"context"
"errors"
"net/url"
"strconv"
"strings"
Expand Down Expand Up @@ -362,17 +363,33 @@ func (api *Client) CreateConversationContext(ctx context.Context, channelName st
return &response.Channel, nil
}

// GetConversationInfoInput Defines the parameters of a GetConversationInfo and GetConversationInfoContext function
type GetConversationInfoInput struct {
ChannelID string
IncludeLocale bool
IncludeNumMembers bool
}

// GetConversationInfo retrieves information about a conversation
func (api *Client) GetConversationInfo(channelID string, includeLocale bool) (*Channel, error) {
return api.GetConversationInfoContext(context.Background(), channelID, includeLocale)
func (api *Client) GetConversationInfo(input *GetConversationInfoInput) (*Channel, error) {
return api.GetConversationInfoContext(context.Background(), input)
}

// GetConversationInfoContext retrieves information about a conversation with a custom context
func (api *Client) GetConversationInfoContext(ctx context.Context, channelID string, includeLocale bool) (*Channel, error) {
func (api *Client) GetConversationInfoContext(ctx context.Context, input *GetConversationInfoInput) (*Channel, error) {
if input == nil {
return nil, errors.New("GetConversationInfoInput must not be nil")
}

if input.ChannelID == "" {
return nil, errors.New("ChannelID must be defined")
}

values := url.Values{
"token": {api.token},
"channel": {channelID},
"include_locale": {strconv.FormatBool(includeLocale)},
"token": {api.token},
"channel": {input.ChannelID},
"include_locale": {strconv.FormatBool(input.IncludeLocale)},
"include_num_members": {strconv.FormatBool(input.IncludeNumMembers)},
}
response, err := api.channelRequest(ctx, "conversations.info", values)
if err != nil {
Expand Down
20 changes: 19 additions & 1 deletion conversation_test.go
Expand Up @@ -400,7 +400,9 @@ func TestGetConversationInfo(t *testing.T) {
http.HandleFunc("/conversations.info", okChannelJsonHandler)
once.Do(startServer)
api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/"))
channel, err := api.GetConversationInfo("CXXXXXXXX", false)
channel, err := api.GetConversationInfo(&GetConversationInfoInput{
ChannelID: "CXXXXXXXX",
})
if err != nil {
t.Errorf("Unexpected error: %s", err)
return
Expand All @@ -409,6 +411,22 @@ func TestGetConversationInfo(t *testing.T) {
t.Error("channel should not be nil")
return
}

// Nil Input Error
api = New("testing-token", OptionAPIURL("http://"+serverAddr+"/"))
_, err = api.GetConversationInfo(nil)
if err == nil {
t.Errorf("Unexpected pass where there should have been nil input error")
return
}

// No Channel Error
api = New("testing-token", OptionAPIURL("http://"+serverAddr+"/"))
_, err = api.GetConversationInfo(&GetConversationInfoInput{})
if err == nil {
t.Errorf("Unexpected pass where there should have been missing channel error")
return
}
}

func leaveConversationHandler(rw http.ResponseWriter, r *http.Request) {
Expand Down

0 comments on commit 617bdc1

Please sign in to comment.