diff --git a/groupchannels.go b/groupchannels.go index 17d613f..187d555 100644 --- a/groupchannels.go +++ b/groupchannels.go @@ -376,3 +376,24 @@ func (c *Client) LeaveFromAGroupChannel(channelURL string, r *LeaveFromAGroupCha type LeaveFromAGroupChannelRequest struct { UserIDs []string `json:"user_ids"` } + +func (c *Client) FreezeAnGroupChannel(channelURL string, r *FreezeAnGroupChannelRequest) (GroupChannel, error) { + pathString, err := templates.GetGroupChannelTemplate(groupChannelsTemplateData{ChannelURL: url.PathEscape(channelURL)}, templates.SendbirdURLGroupChannelsFreezeWithChannelURL) + if err != nil { + return GroupChannel{}, err + } + + parsedURL := c.PrepareUrl(pathString) + + result := GroupChannel{} + + if err := c.putAndReturnJSON(parsedURL, r, &result); err != nil { + return GroupChannel{}, err + } + + return result, nil +} + +type FreezeAnGroupChannelRequest struct { + Freeze bool `json:"freeze"` +} diff --git a/groupchannels_test.go b/groupchannels_test.go index d3bac83..bf0e2c4 100644 --- a/groupchannels_test.go +++ b/groupchannels_test.go @@ -47,6 +47,9 @@ func TestGroupChannelsActions(t *testing.T) { testInviteMembersToGroupChannel(t, groupChannel.ChannelURL, TestGroupChannelAdditionalUsers) + testFreezeAnGroupChannel(t, groupChannel.ChannelURL, true) + testFreezeAnGroupChannel(t, groupChannel.ChannelURL, false) + testHideFromAGroupChannel(t, groupChannel.ChannelURL, TestGroupnChannelUserID1) testLeaveFromAGroupChannel(t, groupChannel.ChannelURL, TestGroupChannelAdditionalUsers) @@ -183,3 +186,15 @@ func testLeaveFromAGroupChannel(t *testing.T, channelURL string, leaveUserIDs [] t.Logf("testLeaveFromAGroupChannel() Result: %+v", result) } + +func testFreezeAnGroupChannel(t *testing.T, channelURL string, freeze bool) { + r := &FreezeAnGroupChannelRequest{ + Freeze: freeze, + } + result, err := testGroupChannelClient.FreezeAnGroupChannel(channelURL, r) + if err != nil { + t.Errorf("Fail in testFreezeAnGroupChannel(): %+v", err) + } + + t.Logf("testFreezeAnGroupChannel() Result: %+v", result) +} diff --git a/templates/templates.go b/templates/templates.go index 700e480..656ffc1 100644 --- a/templates/templates.go +++ b/templates/templates.go @@ -67,6 +67,7 @@ const ( {{define "invite"}}{{template "base" .}}/invite{{end}} {{define "hide"}}{{template "base" .}}/hide{{end}} {{define "leave"}}{{template "base" .}}/leave{{end}} + {{define "freeze"}}{{template "base" .}}/freeze{{end}} {{template "base"}} {{template "members"}} @@ -74,6 +75,7 @@ const ( {{template "invite"}} {{template "hide"}} {{template "leave"}} + {{template "freeze"}} ` SendbirdURLChannelMetadataTemplate = ` @@ -144,6 +146,7 @@ const ( SendbirdURLGroupChannelsInviteWithChannelURL templateKeysGroupChannels = `invite` SendbirdURLGroupChannelsHideWithChannelURL templateKeysGroupChannels = `hide` SendbirdURLGroupChannelsLeaveWithChannelURL templateKeysGroupChannels = `leave` + SendbirdURLGroupChannelsFreezeWithChannelURL templateKeysGroupChannels = `freeze` //Channel Metadata SendbirdURLChannelMetadataWithChannelTypeAndChannelURL templateKeysChannelMetadata = `chMeta` diff --git a/templates/templates_test.go b/templates/templates_test.go index 60c28ca..003181e 100644 --- a/templates/templates_test.go +++ b/templates/templates_test.go @@ -119,6 +119,7 @@ const ( SendbirdURLResultGroupChannelsInviteWithChannelURL = `/group_channels/TestChannelURL/invite` SendbirdURLResultGroupChannelsHideWithChannelURL = `/group_channels/TestChannelURL/hide` SendbirdURLResultGroupChannelsLeaveWithChannelURL = `/group_channels/TestChannelURL/leave` + SendbirdURLResultGroupChannelsFreezeWithChannelURL = `/group_channels/TestChannelURL/freeze` //Group Metadata SendbirdURLResultChannelMetadataWithChannelTypeAndChannelURL = `/open_channels/TestChannelURL/metadata`