diff --git a/clienter_mock_test.go b/clienter_mock_test.go index 7bd55306..5ea85bce 100644 --- a/clienter_mock_test.go +++ b/clienter_mock_test.go @@ -52,18 +52,18 @@ func (mr *mockClienterMockRecorder) GetConversationHistoryContext(ctx, params in } // GetConversationInfoContext mocks base method. -func (m *mockClienter) GetConversationInfoContext(ctx context.Context, channelID string, includeLocale bool) (*slack.Channel, error) { +func (m *mockClienter) GetConversationInfoContext(ctx context.Context, input *slack.GetConversationInfoInput) (*slack.Channel, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetConversationInfoContext", ctx, channelID, includeLocale) + ret := m.ctrl.Call(m, "GetConversationInfoContext", ctx, input) ret0, _ := ret[0].(*slack.Channel) ret1, _ := ret[1].(error) return ret0, ret1 } // GetConversationInfoContext indicates an expected call of GetConversationInfoContext. -func (mr *mockClienterMockRecorder) GetConversationInfoContext(ctx, channelID, includeLocale interface{}) *gomock.Call { +func (mr *mockClienterMockRecorder) GetConversationInfoContext(ctx, input interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConversationInfoContext", reflect.TypeOf((*mockClienter)(nil).GetConversationInfoContext), ctx, channelID, includeLocale) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConversationInfoContext", reflect.TypeOf((*mockClienter)(nil).GetConversationInfoContext), ctx, input) } // GetConversationRepliesContext mocks base method. diff --git a/export/export.go b/export/export.go index da2e0017..00b822e1 100644 --- a/export/export.go +++ b/export/export.go @@ -169,7 +169,7 @@ func (se *Export) inclusiveExport(ctx context.Context, uidx structures.UserIndex if err != nil { return nil, err } - ch, err := se.sd.Client().GetConversationInfoContext(ctx, sl.Channel, true) + ch, err := se.sd.Client().GetConversationInfoContext(ctx, &slack.GetConversationInfoInput{ChannelID: sl.Channel, IncludeLocale: true, IncludeNumMembers: true}) if err != nil { return nil, fmt.Errorf("error getting info for %s: %w", sl, err) } diff --git a/export/message.go b/export/message.go index f8d9801b..878cead0 100644 --- a/export/message.go +++ b/export/message.go @@ -52,7 +52,7 @@ func newExportMessage(msg *types.Message, users structures.UserIndex) *ExportMes if user, ok := users[msg.User]; ok && !user.IsBot { expMsg.UserProfile = &ExportUserProfile{ - AvatarHash: user.Profile.AvatarHash, // is currently not populated. + AvatarHash: "", Image72: user.Profile.Image72, FirstName: user.Profile.FirstName, RealName: user.Profile.RealName, diff --git a/go.mod b/go.mod index 77eb5d8e..83082bc2 100644 --- a/go.mod +++ b/go.mod @@ -42,4 +42,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/slack-go/slack => github.com/rusq/slack v0.11.300 +replace github.com/slack-go/slack => github.com/rusq/slack v0.12.0 diff --git a/go.sum b/go.sum index d60d328e..2f07eb5a 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,8 @@ github.com/rusq/secure v0.0.3 h1:PcWc7devLyJfMk8KZW2qUQFwhH5ugme4ncbcGztsLPw= github.com/rusq/secure v0.0.3/go.mod h1:F1QilMKreuFRjov0UY7DZSIXn77/8RqMVGu2zV0RtqY= github.com/rusq/secure v0.0.4 h1:svpiZHfHnx89eEDCCFI9OXG1Y8hL9kUWUG6fJbrWUOI= github.com/rusq/secure v0.0.4/go.mod h1:F1QilMKreuFRjov0UY7DZSIXn77/8RqMVGu2zV0RtqY= -github.com/rusq/slack v0.11.300 h1:s/1gVdKU+gD+3DUhAzMV6NwBGSUOP65J7QP0pB6EZRQ= -github.com/rusq/slack v0.11.300/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= +github.com/rusq/slack v0.12.0 h1:/LTTLPAoZU7Epvd11i+/OHJfHTac33jfnlqiH7jlVuM= +github.com/rusq/slack v0.12.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= github.com/rusq/tracer v1.0.1 h1:5u4PCV8NGO97VuAINQA4gOVRkPoqHimLE2jpezRVNMU= github.com/rusq/tracer v1.0.1/go.mod h1:Rqu48C3/K8bA5NPmF20Hft73v431MQIdM+Co+113pME= github.com/schollz/progressbar/v3 v3.8.6 h1:QruMUdzZ1TbEP++S1m73OqRJk20ON11m6Wqv4EoGg8c= diff --git a/messages.go b/messages.go index ff748e37..5dcf4679 100644 --- a/messages.go +++ b/messages.go @@ -170,7 +170,7 @@ func (sd *Session) getChannelName(ctx context.Context, l *rate.Limiter, channelI var ci *slack.Channel if err := withRetry(ctx, l, sd.options.Tier3Retries, func() error { var err error - ci, err = sd.client.GetConversationInfoContext(ctx, channelID, false) + ci, err = sd.client.GetConversationInfoContext(ctx, &slack.GetConversationInfoInput{ChannelID: channelID}) return err }); err != nil { return "", err diff --git a/messages_test.go b/messages_test.go index cf3a3fff..b0173c42 100644 --- a/messages_test.go +++ b/messages_test.go @@ -322,7 +322,9 @@ func TestSession_DumpAll(t *testing.T) { } func mockConvInfo(mc *mockClienter, channelID, wantName string) { - mc.EXPECT().GetConversationInfoContext(gomock.Any(), channelID, false).Return(&slack.Channel{GroupConversation: slack.GroupConversation{Name: wantName, Conversation: slack.Conversation{NameNormalized: wantName + "_normalized"}}}, nil) + mc.EXPECT(). + GetConversationInfoContext(gomock.Any(), &slack.GetConversationInfoInput{ChannelID: channelID}). + Return(&slack.Channel{GroupConversation: slack.GroupConversation{Name: wantName, Conversation: slack.Conversation{NameNormalized: wantName + "_normalized"}}}, nil) } func TestConversation_String(t *testing.T) { @@ -389,7 +391,9 @@ func TestSession_getChannelName(t *testing.T) { channelID: "TESTCHAN", }, expectFn: func(sc *mockClienter) { - sc.EXPECT().GetConversationInfoContext(gomock.Any(), "TESTCHAN", false).Return(&slack.Channel{GroupConversation: slack.GroupConversation{Name: "unittest", Conversation: slack.Conversation{NameNormalized: "unittest_normalized"}}}, nil) + sc.EXPECT(). + GetConversationInfoContext(gomock.Any(), &slack.GetConversationInfoInput{ChannelID: "TESTCHAN"}). + Return(&slack.Channel{GroupConversation: slack.GroupConversation{Name: "unittest", Conversation: slack.Conversation{NameNormalized: "unittest_normalized"}}}, nil) }, want: "unittest", wantErr: false, @@ -403,7 +407,9 @@ func TestSession_getChannelName(t *testing.T) { channelID: "TESTCHAN", }, expectFn: func(sc *mockClienter) { - sc.EXPECT().GetConversationInfoContext(gomock.Any(), "TESTCHAN", false).Return(nil, errors.New("rekt")) + sc.EXPECT(). + GetConversationInfoContext(gomock.Any(), &slack.GetConversationInfoInput{ChannelID: "TESTCHAN"}). + Return(nil, errors.New("rekt")) }, want: "", wantErr: true, diff --git a/mocks/mock_io/mock_io.go b/mocks/mock_io/mock_io.go new file mode 100644 index 00000000..5065f7f1 --- /dev/null +++ b/mocks/mock_io/mock_io.go @@ -0,0 +1,115 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: io (interfaces: ReadCloser,WriteCloser) + +// Package mock_io is a generated GoMock package. +package mock_io + +import ( + reflect "reflect" + + gomock "github.com/golang/mock/gomock" +) + +// MockReadCloser is a mock of ReadCloser interface. +type MockReadCloser struct { + ctrl *gomock.Controller + recorder *MockReadCloserMockRecorder +} + +// MockReadCloserMockRecorder is the mock recorder for MockReadCloser. +type MockReadCloserMockRecorder struct { + mock *MockReadCloser +} + +// NewMockReadCloser creates a new mock instance. +func NewMockReadCloser(ctrl *gomock.Controller) *MockReadCloser { + mock := &MockReadCloser{ctrl: ctrl} + mock.recorder = &MockReadCloserMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockReadCloser) EXPECT() *MockReadCloserMockRecorder { + return m.recorder +} + +// Close mocks base method. +func (m *MockReadCloser) Close() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Close") + ret0, _ := ret[0].(error) + return ret0 +} + +// Close indicates an expected call of Close. +func (mr *MockReadCloserMockRecorder) Close() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockReadCloser)(nil).Close)) +} + +// Read mocks base method. +func (m *MockReadCloser) Read(arg0 []byte) (int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Read", arg0) + ret0, _ := ret[0].(int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Read indicates an expected call of Read. +func (mr *MockReadCloserMockRecorder) Read(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockReadCloser)(nil).Read), arg0) +} + +// MockWriteCloser is a mock of WriteCloser interface. +type MockWriteCloser struct { + ctrl *gomock.Controller + recorder *MockWriteCloserMockRecorder +} + +// MockWriteCloserMockRecorder is the mock recorder for MockWriteCloser. +type MockWriteCloserMockRecorder struct { + mock *MockWriteCloser +} + +// NewMockWriteCloser creates a new mock instance. +func NewMockWriteCloser(ctrl *gomock.Controller) *MockWriteCloser { + mock := &MockWriteCloser{ctrl: ctrl} + mock.recorder = &MockWriteCloserMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockWriteCloser) EXPECT() *MockWriteCloserMockRecorder { + return m.recorder +} + +// Close mocks base method. +func (m *MockWriteCloser) Close() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Close") + ret0, _ := ret[0].(error) + return ret0 +} + +// Close indicates an expected call of Close. +func (mr *MockWriteCloserMockRecorder) Close() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockWriteCloser)(nil).Close)) +} + +// Write mocks base method. +func (m *MockWriteCloser) Write(arg0 []byte) (int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Write", arg0) + ret0, _ := ret[0].(int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Write indicates an expected call of Write. +func (mr *MockWriteCloserMockRecorder) Write(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Write", reflect.TypeOf((*MockWriteCloser)(nil).Write), arg0) +} diff --git a/slackdump.go b/slackdump.go index 26e0c0dc..3a00c816 100644 --- a/slackdump.go +++ b/slackdump.go @@ -45,7 +45,7 @@ type Session struct { // clienter is the interface with some functions of slack.Client with the sole // purpose of mocking in tests (see client_mock.go) type clienter interface { - GetConversationInfoContext(ctx context.Context, channelID string, includeLocale bool) (*slack.Channel, error) + GetConversationInfoContext(ctx context.Context, input *slack.GetConversationInfoInput) (*slack.Channel, error) GetConversationHistoryContext(ctx context.Context, params *slack.GetConversationHistoryParameters) (*slack.GetConversationHistoryResponse, error) GetConversationRepliesContext(ctx context.Context, params *slack.GetConversationRepliesParameters) (msgs []slack.Message, hasMore bool, nextCursor string, err error) GetConversationsContext(ctx context.Context, params *slack.GetConversationsParameters) (channels []slack.Channel, nextCursor string, err error)