mtgbot/modules/lineobj/lineobj.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
}
}
}