From 599cbb7d56fcddd1d1f637b83bacb971953ec847 Mon Sep 17 00:00:00 2001 From: mileusna Date: Fri, 23 Jun 2017 19:20:05 +0200 Subject: [PATCH] Add Log package logger --- message.go | 31 ------------------------------- request.go | 3 +-- viber.go | 19 ++++++++++++++++++- webhook.go | 17 +++++++---------- 4 files changed, 26 insertions(+), 44 deletions(-) diff --git a/message.go b/message.go index 3ce3be5..52abccb 100644 --- a/message.go +++ b/message.go @@ -135,7 +135,6 @@ func (v *Viber) sendMessage(url string, m interface{}) (msgToken uint64, err err if err != nil { return 0, err } - fmt.Println(string(b)) return parseMsgResponse(b) } @@ -283,37 +282,7 @@ func (m *TextMessage) SetReceiver(r string) { m.Receiver = r } -// SetReceiver for url message -func (m *URLMessage) SetReceiver(r string) { - m.Receiver = r -} - -// SetReceiver for picture message -func (m *PictureMessage) SetReceiver(r string) { - m.Receiver = r -} - -// SetReceiver for video message -func (m *VideoMessage) SetReceiver(r string) { - m.Receiver = r -} - // SetFrom to text message for public account message func (m *TextMessage) SetFrom(from string) { m.From = from } - -// SetFrom to url message for public account message -func (m *URLMessage) SetFrom(from string) { - m.From = from -} - -// SetFrom to picture message for public account message -func (m *PictureMessage) SetFrom(from string) { - m.From = from -} - -// SetFrom to video message for public account message -func (m *VideoMessage) SetFrom(from string) { - m.From = from -} diff --git a/request.go b/request.go index d5af76e..82d3143 100644 --- a/request.go +++ b/request.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/json" "io/ioutil" - "log" "net/http" ) @@ -15,7 +14,7 @@ func (v *Viber) PostData(url string, i interface{}) ([]byte, error) { return nil, err } - log.Println(string(b)) + Log.Println("Post data:", string(b)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(b)) req.Close = true diff --git a/viber.go b/viber.go index dbd7af0..7534bde 100644 --- a/viber.go +++ b/viber.go @@ -6,6 +6,7 @@ import ( "encoding/hex" "encoding/json" "io/ioutil" + "log" "net/http" "regexp" "strings" @@ -53,7 +54,11 @@ type Viber struct { Failed func(v *Viber, userID string, token uint64, descr string, t time.Time) } -var regexpPeekMsgType = regexp.MustCompile("\"type\":\\s*\"(.*)\"") +var ( + // Log errors, set to logger if you want to log package activities and errors + Log = log.New(ioutil.Discard, "Viber >>", 0) + regexpPeekMsgType = regexp.MustCompile("\"type\":\\s*\"(.*)\"") +) // ServeHTTP // https://developers.viber.com/docs/api/rest-bot-api/#callbacks @@ -61,16 +66,21 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil { + Log.Println(err) return } r.Body.Close() + Log.Println("Received from Viber:", string(body)) + if !v.checkHMAC(body, r.Header.Get("X-Viber-Content-Signature")) { + Log.Println("X-Viber-Content-Signature doesn't match") return } var e event if err := json.Unmarshal(body, &e); err != nil { + Log.Println(err) return } @@ -79,6 +89,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { if v.Subscribed != nil { var u User if err := json.Unmarshal(e.User, &u); err != nil { + Log.Println(err) return } go v.Subscribed(v, u, e.MessageToken, e.Timestamp.Time) @@ -93,6 +104,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { if v.ConversationStarted != nil { var u User if err := json.Unmarshal(e.User, &u); err != nil { + Log.Println(err) return } if msg := v.ConversationStarted(v, u, e.Type, e.Context, e.Subscribed, e.MessageToken, e.Timestamp.Time); msg != nil { @@ -122,6 +134,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { if v.Message != nil { var u User if err := json.Unmarshal(e.Sender, &u); err != nil { + Log.Println(err) return } @@ -130,6 +143,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "text": var m TextMessage if err := json.Unmarshal(e.Message, &m); err != nil { + Log.Println(err) return } go v.Message(v, u, &m, e.MessageToken, e.Timestamp.Time) @@ -137,6 +151,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "picture": var m PictureMessage if err := json.Unmarshal(e.Message, &m); err != nil { + Log.Println(err) return } go v.Message(v, u, &m, e.MessageToken, e.Timestamp.Time) @@ -144,6 +159,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "video": var m VideoMessage if err := json.Unmarshal(e.Message, &m); err != nil { + Log.Println(err) return } go v.Message(v, u, &m, e.MessageToken, e.Timestamp.Time) @@ -151,6 +167,7 @@ func (v *Viber) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "url": var m URLMessage if err := json.Unmarshal(e.Message, &m); err != nil { + Log.Println(err) return } go v.Message(v, u, &m, e.MessageToken, e.Timestamp.Time) diff --git a/webhook.go b/webhook.go index b370811..e36b3d9 100644 --- a/webhook.go +++ b/webhook.go @@ -1,9 +1,6 @@ package viber -import ( - "encoding/json" - "fmt" -) +import "encoding/json" // //https://chatapi.viber.com/pa/set_webhook @@ -42,19 +39,19 @@ type WebhookVerify struct { // if eventTypes is nil, all callbacks will be set to webhook // if eventTypes is empty []string mandatory callbacks will be set // Mandatory callbacks: "message", "subscribed", "unsubscribed" -// All possible callbacks: "delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started" +// All possible callbacks: "message", "subscribed", "unsubscribed", "delivered", "seen", "failed", "conversation_started" func (v *Viber) SetWebhook(url string, eventTypes []string) (WebhookResp, error) { + var resp WebhookResp req := WebhookReq{ URL: url, EventTypes: eventTypes, } - r, err := v.PostData("https://chatapi.viber.com/pa/set_webhook", req) + if err != nil { + return resp, err + } - fmt.Println(string(r)) - var resp WebhookResp - json.Unmarshal(r, &resp) - + err = json.Unmarshal(r, &resp) return resp, err }