71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
package lineobj
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
// SourceObject -
|
|
type SourceObject struct {
|
|
Type string `json:"type" cc:"type"`
|
|
UserID string `json:"userId" cc:"userId"`
|
|
GroupID string `json:"groupId" cc:"groupId"`
|
|
}
|
|
|
|
// EventObject -
|
|
type EventObject struct {
|
|
Source *SourceObject `json:"source" cc:"source"`
|
|
Type string `json:"type" cc:"type"`
|
|
Timestamp int64 `json:"timestamp" cc:"timestamp"`
|
|
ReplyToken string `json:"replyToken" cc:"replyToken"`
|
|
Message map[string]interface{} `json:"message" cc:"message"`
|
|
}
|
|
|
|
// HookEvent -
|
|
type HookEvent struct {
|
|
Events []*EventObject `json:"events"`
|
|
}
|
|
|
|
// ParseWebhookBody -
|
|
func ParseWebhookBody(b []byte) *HookEvent {
|
|
if len(b) == 0 {
|
|
return nil
|
|
}
|
|
evt := &HookEvent{}
|
|
err := json.Unmarshal(b, evt)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return evt
|
|
}
|
|
|
|
// MessageEvent -
|
|
func MessageEvent(e *EventObject) {
|
|
switch e.Type {
|
|
case "message":
|
|
// TODO
|
|
break
|
|
default:
|
|
fmt.Printf("line webhook type not match (%v)", e.Type)
|
|
}
|
|
}
|
|
|
|
func messageType(e *EventObject) {
|
|
msg := e.Message
|
|
mtype, ok := msg["type"]
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
if t, ok := mtype.(string); ok {
|
|
switch t {
|
|
case "text":
|
|
// TODO
|
|
break
|
|
case "iamge":
|
|
// TODO
|
|
break
|
|
}
|
|
}
|
|
}
|