Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix: message.Type() is a empty value #333

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
module github.com/line/line-bot-sdk-go/v7

go 1.19

require github.com/stretchr/testify v1.8.0
kkdai marked this conversation as resolved.
Show resolved Hide resolved

require (
kkdai marked this conversation as resolved.
Show resolved Hide resolved
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
kkdai marked this conversation as resolved.
Show resolved Hide resolved
15 changes: 15 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
kkdai marked this conversation as resolved.
Show resolved Hide resolved
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
31 changes: 19 additions & 12 deletions linebot/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -442,42 +442,48 @@ func (e *Event) UnmarshalJSON(body []byte) (err error) {
switch rawEvent.Message.Type {
case MessageTypeText:
e.Message = &TextMessage{
ID: rawEvent.Message.ID,
Text: rawEvent.Message.Text,
Emojis: rawEvent.Message.Emojis,
Mention: rawEvent.Message.Mention,
ID: rawEvent.Message.ID,
Text: rawEvent.Message.Text,
Emojis: rawEvent.Message.Emojis,
Mention: rawEvent.Message.Mention,
messageType: MessageTypeText,
}
case MessageTypeImage:
e.Message = &ImageMessage{
ID: rawEvent.Message.ID,
ContentProvider: rawEvent.Message.ContentProvider,
ImageSet: rawEvent.Message.ImageSet,
messageType: MessageTypeImage,
}
case MessageTypeVideo:
e.Message = &VideoMessage{
ID: rawEvent.Message.ID,
Duration: rawEvent.Message.Duration,
ContentProvider: rawEvent.Message.ContentProvider,
messageType: MessageTypeVideo,
}
case MessageTypeAudio:
e.Message = &AudioMessage{
ID: rawEvent.Message.ID,
Duration: rawEvent.Message.Duration,
ContentProvider: rawEvent.Message.ContentProvider,
messageType: MessageTypeAudio,
}
case MessageTypeFile:
e.Message = &FileMessage{
ID: rawEvent.Message.ID,
FileName: rawEvent.Message.FileName,
FileSize: rawEvent.Message.FileSize,
ID: rawEvent.Message.ID,
FileName: rawEvent.Message.FileName,
FileSize: rawEvent.Message.FileSize,
messageType: MessageTypeFile,
}
case MessageTypeLocation:
e.Message = &LocationMessage{
ID: rawEvent.Message.ID,
Title: rawEvent.Message.Title,
Address: rawEvent.Message.Address,
Latitude: rawEvent.Message.Latitude,
Longitude: rawEvent.Message.Longitude,
ID: rawEvent.Message.ID,
Title: rawEvent.Message.Title,
Address: rawEvent.Message.Address,
Latitude: rawEvent.Message.Latitude,
Longitude: rawEvent.Message.Longitude,
messageType: MessageTypeLocation,
}
case MessageTypeSticker:
e.Message = &StickerMessage{
Expand All @@ -487,6 +493,7 @@ func (e *Event) UnmarshalJSON(body []byte) (err error) {
StickerResourceType: rawEvent.Message.StickerResourceType,
Keywords: rawEvent.Message.Keywords,
Text: rawEvent.Message.Text,
messageType: MessageTypeSticker,
}
}
case EventTypePostback:
Expand Down
71 changes: 52 additions & 19 deletions linebot/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ var webhookTestRequestBody = `{
"type": "user",
"userId": "u206d25c2ea6bd87c17655609a1c37cb8"
},
"webhookEventId": "01FZ74ASS536FW97EX38NKCZQK",
"webhookEventId": "01FZ74ASS536FW97EX38NKCZQK",
"deliveryContext": {
"isRedelivery": false
},
Expand Down Expand Up @@ -771,8 +771,9 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: false,
},
Message: &TextMessage{
ID: "325708",
Text: "Hello, world",
ID: "325708",
Text: "Hello, world",
messageType: MessageTypeText,
},
},
{
Expand All @@ -790,8 +791,9 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: true,
},
Message: &TextMessage{
ID: "325708",
Text: "Hello, world",
ID: "325708",
Text: "Hello, world",
messageType: MessageTypeText,
},
},
{
Expand Down Expand Up @@ -824,6 +826,7 @@ var webhookTestWantEvents = []*Event{
},
},
},
messageType: MessageTypeText,
},
},
{
Expand All @@ -840,7 +843,8 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: false,
},
Message: &ImageMessage{
ID: "325708",
ID: "325708",
messageType: MessageTypeImage,
},
},
{
Expand All @@ -866,6 +870,7 @@ var webhookTestWantEvents = []*Event{
Index: 2,
Total: 2,
},
messageType: MessageTypeImage,
},
},
{
Expand All @@ -888,7 +893,8 @@ var webhookTestWantEvents = []*Event{
OriginalContentURL: "https://example.com/original.mp4",
PreviewImageURL: "https://example.com/preview.jpg",
},
Duration: 60000,
Duration: 60000,
messageType: MessageTypeVideo,
},
},
{
Expand All @@ -909,7 +915,8 @@ var webhookTestWantEvents = []*Event{
ContentProvider: &ContentProvider{
Type: ContentProviderTypeLINE,
},
Duration: 60000,
Duration: 60000,
messageType: MessageTypeAudio,
},
},
{
Expand All @@ -926,9 +933,10 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: false,
},
Message: &FileMessage{
ID: "325708",
FileName: "file.txt",
FileSize: 2138,
ID: "325708",
FileName: "file.txt",
FileSize: 2138,
messageType: MessageTypeFile,
},
},
{
Expand All @@ -945,11 +953,12 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: false,
},
Message: &LocationMessage{
ID: "325708",
Title: "hello",
Address: "〒150-0002 東京都渋谷区渋谷2丁目21−1",
Latitude: 35.65910807942215,
Longitude: 139.70372892916203,
ID: "325708",
Title: "hello",
Address: "〒150-0002 東京都渋谷区渋谷2丁目21−1",
Latitude: 35.65910807942215,
Longitude: 139.70372892916203,
messageType: MessageTypeLocation,
},
},
{
Expand All @@ -970,6 +979,7 @@ var webhookTestWantEvents = []*Event{
PackageID: "1",
StickerID: "1",
StickerResourceType: StickerResourceTypeStatic,
messageType: MessageTypeSticker,
},
},
{
Expand All @@ -990,6 +1000,7 @@ var webhookTestWantEvents = []*Event{
PackageID: "1",
StickerID: "3",
StickerResourceType: StickerResourceTypeAnimationSound,
messageType: MessageTypeSticker,
},
},
{
Expand All @@ -1011,6 +1022,7 @@ var webhookTestWantEvents = []*Event{
StickerID: "3",
StickerResourceType: StickerResourceTypePerStickerText,
Keywords: []string{"cony", "sally", "Staring", "hi", "whatsup", "line", "howdy", "HEY", "Peeking", "wave", "peek", "Hello", "yo", "greetings"},
messageType: MessageTypeSticker,
},
},
{
Expand Down Expand Up @@ -1394,8 +1406,9 @@ var webhookTestWantEvents = []*Event{
IsRedelivery: false,
},
Message: &TextMessage{
ID: "325708",
Text: "Stand by me",
ID: "325708",
Text: "Stand by me",
messageType: MessageTypeText,
},
},
{
Expand All @@ -1417,6 +1430,7 @@ var webhookTestWantEvents = []*Event{
Emojis: []*Emoji{
{Index: 14, Length: 6, ProductID: "5ac1bfd5040ab15980c9b435", EmojiID: "001"},
},
messageType: MessageTypeText,
},
},
{
Expand Down Expand Up @@ -1477,7 +1491,7 @@ func TestParseRequest(t *testing.T) {
for i, got := range gotEvents {
want := webhookTestWantEvents[i]
if !reflect.DeepEqual(got, want) {
t.Errorf("Event %d %v; want %v", i, got, want)
t.Errorf("Event %d %+v; want %+v", i, got, want)
gota := got
if !reflect.DeepEqual(
gota.Things.Result.BLENotificationPayload,
Expand Down Expand Up @@ -2104,3 +2118,22 @@ func BenchmarkTestWebhook(b *testing.B) {
client.TestWebhook().Do()
}
}

func TestParseRequestEvents(t *testing.T) {
request := &struct {
Events []*Event `json:"events"`
}{}
err := json.Unmarshal([]byte(webhookTestRequestBody), request)
if err != nil {
t.Error(t, err)
}

for _, event := range request.Events {
switch event.Type {
case EventTypeMessage:
if event.Message.Type() == "" {
t.Error("message type is empty")
}
}
}
}