From ed713542569827451fdbf7a6b90eaf4d77c32bf9 Mon Sep 17 00:00:00 2001 From: Harrison Shoebridge Date: Wed, 13 Apr 2016 19:36:38 +1000 Subject: [PATCH] Consolidate data structures --- cmd/bot/main.go | 2 +- message.go | 21 +++++++++++++-------- messenger.go | 18 +++++++----------- receiving.go | 22 +++++----------------- 4 files changed, 26 insertions(+), 37 deletions(-) diff --git a/cmd/bot/main.go b/cmd/bot/main.go index 10fcb53..78b4d32 100644 --- a/cmd/bot/main.go +++ b/cmd/bot/main.go @@ -35,7 +35,7 @@ func main() { }) m.HandleDelivery(func(d messenger.Delivery, r *messenger.Response) { - fmt.Println(d.Watermark.Format(time.UnixDate)) + fmt.Println(d.Watermark().Format(time.UnixDate)) }) fmt.Println("Serving messenger bot on localhost:8080") diff --git a/message.go b/message.go index 1e2556d..4115d2f 100644 --- a/message.go +++ b/message.go @@ -3,15 +3,20 @@ package messenger import "time" type Message struct { - Sender Sender - Recipient Recipient - Time time.Time - Text string - Seq int + Sender Sender `json:"-"` + Recipient Recipient `json:"-"` + Time time.Time `json:"-"` + Mid string `json:"mid"` + Text string `json:"text"` + Seq int `json:"seq"` } type Delivery struct { - Mids []string - Watermark time.Time - Seq int + Mids []string `json:"mids"` + RawWatermark int64 `json:"watermark"` + Seq int `json:"seq"` +} + +func (d Delivery) Watermark() time.Time { + return time.Unix(d.RawWatermark, 0) } diff --git a/messenger.go b/messenger.go index 6e2442f..0057751 100644 --- a/messenger.go +++ b/messenger.go @@ -91,20 +91,16 @@ func (m *Messenger) dispatch(r Receive) { switch a { case TextAction: for _, f := range m.messageHandlers { - f(Message{ - Sender: info.Sender, - Recipient: info.Recipient, - Time: time.Unix(info.Timestamp, 0), - Text: info.Message.Text, - }, resp) + message := *info.Message + message.Sender = info.Sender + message.Recipient = info.Recipient + message.Time = time.Unix(info.Timestamp, 0) + + f(message, resp) } case DeliveryAction: for _, f := range m.deliveryHandlers { - f(Delivery{ - Mids: info.Delivery.Mids, - Seq: info.Delivery.Seq, - Watermark: time.Unix(info.Delivery.Watermark, 0), - }, resp) + f(*info.Delivery, resp) } } } diff --git a/receiving.go b/receiving.go index 8a87514..c36e772 100644 --- a/receiving.go +++ b/receiving.go @@ -12,11 +12,11 @@ type Entry struct { } type MessageInfo struct { - Sender Sender `json:"sender"` - Recipient Recipient `json:"recipient"` - Timestamp int64 `json:"timestamp"` - Message *MessageCallback `json:"message"` - Delivery *DeliveryCallback `json:"delivery"` + Sender Sender `json:"sender"` + Recipient Recipient `json:"recipient"` + Timestamp int64 `json:"timestamp"` + Message *Message `json:"message"` + Delivery *Delivery `json:"delivery"` } type Sender struct { @@ -26,15 +26,3 @@ type Sender struct { type Recipient struct { ID int64 `json:"id"` } - -type MessageCallback struct { - Mid string `json:"mid"` - Seq int `json:"seq"` - Text string `json:"text"` -} - -type DeliveryCallback struct { - Mids []string `json:"mids"` - Watermark int64 `json:"watermark"` - Seq int `json:"seq"` -}