From 657f967a49e6f66a42fe76c19e1ed91ece0fcb9d Mon Sep 17 00:00:00 2001 From: Artyom Belousov Date: Sat, 11 May 2019 14:01:40 +0300 Subject: [PATCH] Added VK part --- .gitignore | 1 + main.go | 11 +++++++++++ vk/handlers.go | 18 ++++++++++++++++++ vk/message.go | 24 ++++++++++++++++++++++++ vk/structs.go | 11 +++++++++++ 5 files changed, 65 insertions(+) create mode 100644 vk/handlers.go create mode 100644 vk/message.go create mode 100644 vk/structs.go diff --git a/.gitignore b/.gitignore index e3a1c23..0360cc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ mtg-price-vk */.swp +vk/token.go diff --git a/main.go b/main.go index da29a2c..0a49521 100644 --- a/main.go +++ b/main.go @@ -1,4 +1,15 @@ package main +import ( + "github.com/flygrounder/mtg-price-vk/vk" + "github.com/gin-gonic/gin" + "math/rand" + "time" +) + func main() { + rand.Seed(time.Now().UTC().UnixNano()) + r := gin.Default() + r.POST("callback/message", vk.HandleMessage) + r.Run() } diff --git a/vk/handlers.go b/vk/handlers.go new file mode 100644 index 0000000..45f41a1 --- /dev/null +++ b/vk/handlers.go @@ -0,0 +1,18 @@ +package vk + +import ( + "github.com/flygrounder/mtg-price-vk/cardsinfo" + "github.com/gin-gonic/gin" + "net/http" +) + +func HandleMessage(c *gin.Context) { + defer c.String(http.StatusOK, "ok") + var req MessageRequest + c.BindJSON(&req) + if req.Secret != SECRET_KEY { + return + } + cardName := cardsinfo.GetOriginalName(req.Object.Body) + Message(req.Object.UserId, cardName) +} diff --git a/vk/message.go b/vk/message.go new file mode 100644 index 0000000..2bc00ab --- /dev/null +++ b/vk/message.go @@ -0,0 +1,24 @@ +package vk + +import ( + "math/rand" + "net/http" + "net/url" + "strconv" + "strings" +) + +const VKURL = "https://api.vk.com/method/messages.send" + +func Message(userId int64, message string) { + randomId := rand.Int31() + params := []string{ + "access_token=" + TOKEN, + "peer_id=" + strconv.FormatInt(userId, 10), + "message=" + url.QueryEscape(message), + "v=5.95", + "random_id=" + strconv.FormatInt(int64(randomId), 10), + } + paramString := strings.Join(params, "&") + http.Get(VKURL + "?" + paramString) +} diff --git a/vk/structs.go b/vk/structs.go new file mode 100644 index 0000000..ee1ef27 --- /dev/null +++ b/vk/structs.go @@ -0,0 +1,11 @@ +package vk + +type MessageRequest struct { + Object UserMessage `json:"object"` + Secret string `json:"secret"` +} + +type UserMessage struct { + Body string `json:"body"` + UserId int64 `json:"user_id"` +}