PLT-6971: Fix Slack Import of non-ascii channel names. (#6969)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
ecb82dbd12
Коммит
5f8a93fca6
@@ -53,6 +53,8 @@ type SlackPost struct {
|
|||||||
Attachments []*model.SlackAttachment `json:"attachments"`
|
Attachments []*model.SlackAttachment `json:"attachments"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isValidChannelNameCharacters = regexp.MustCompile(`^[a-zA-Z0-9\-_]+$`).MatchString
|
||||||
|
|
||||||
type SlackComment struct {
|
type SlackComment struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
Comment string `json:"comment"`
|
Comment string `json:"comment"`
|
||||||
@@ -77,13 +79,17 @@ func SlackConvertTimeStamp(ts string) int64 {
|
|||||||
return timeStamp * 1000 // Convert to milliseconds
|
return timeStamp * 1000 // Convert to milliseconds
|
||||||
}
|
}
|
||||||
|
|
||||||
func SlackConvertChannelName(channelName string) string {
|
func SlackConvertChannelName(channelName string, channelId string) string {
|
||||||
newName := strings.Trim(channelName, "_-")
|
newName := strings.Trim(channelName, "_-")
|
||||||
if len(newName) == 1 {
|
if len(newName) == 1 {
|
||||||
return "slack-channel-" + newName
|
return "slack-channel-" + newName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isValidChannelNameCharacters(newName) {
|
||||||
return newName
|
return newName
|
||||||
|
} else {
|
||||||
|
return strings.ToLower(channelId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SlackParseChannels(data io.Reader) ([]SlackChannel, error) {
|
func SlackParseChannels(data io.Reader) ([]SlackChannel, error) {
|
||||||
@@ -466,7 +472,7 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
|
|||||||
TeamId: teamId,
|
TeamId: teamId,
|
||||||
Type: model.CHANNEL_OPEN,
|
Type: model.CHANNEL_OPEN,
|
||||||
DisplayName: sChannel.Name,
|
DisplayName: sChannel.Name,
|
||||||
Name: SlackConvertChannelName(sChannel.Name),
|
Name: SlackConvertChannelName(sChannel.Name, sChannel.Id),
|
||||||
Purpose: sChannel.Purpose["value"],
|
Purpose: sChannel.Purpose["value"],
|
||||||
Header: sChannel.Topic["value"],
|
Header: sChannel.Topic["value"],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,19 +23,21 @@ func TestSlackConvertTimeStamp(t *testing.T) {
|
|||||||
|
|
||||||
func TestSlackConvertChannelName(t *testing.T) {
|
func TestSlackConvertChannelName(t *testing.T) {
|
||||||
var testData = []struct {
|
var testData = []struct {
|
||||||
input string
|
nameInput string
|
||||||
|
idInput string
|
||||||
output string
|
output string
|
||||||
}{
|
}{
|
||||||
{"test-channel", "test-channel"},
|
{"test-channel", "C0G08DLQH", "test-channel"},
|
||||||
{"_test_channel_", "test_channel"},
|
{"_test_channel_", "C0G04DLQH", "test_channel"},
|
||||||
{"__test", "test"},
|
{"__test", "C0G07DLQH", "test"},
|
||||||
{"-t", "slack-channel-t"},
|
{"-t", "C0G06DLQH", "slack-channel-t"},
|
||||||
{"a", "slack-channel-a"},
|
{"a", "C0G05DLQH", "slack-channel-a"},
|
||||||
|
{"случайный", "C0G05DLQD", "c0g05dlqd"},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, td := range testData {
|
for _, td := range testData {
|
||||||
if td.output != SlackConvertChannelName(td.input) {
|
if td.output != SlackConvertChannelName(td.nameInput, td.idInput) {
|
||||||
t.Fatalf("Did not convert channel name correctly: %v", td.input)
|
t.Fatalf("Did not convert channel name correctly: %v", td.nameInput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user