go-lark / lark-gin

Gin Middleware for go-lark

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lark Gin

build codecov

Gin Middleware for go-lark.

NOTICE: Only URL challenge and incoming message event (schema 1.0) are supported. Other events will be supported with future v2 version with event schema 2.0.

Installation

go get -u github.com/go-lark/lark-gin

Usage

package main

import (
    "fmt"

    "github.com/gin-gonic/gin"
    "github.com/go-lark/lark"
    larkgin "github.com/go-lark/lark-gin"
)

func main() {
    r := gin.Default()

    middleware := larkgin.NewLarkMiddleware()
    r.Use(middleware.LarkChallengeHandler())
    // Event Schema 1.0, for older bots
    r.Use(middleware.LarkMessageHandler())
    // Event Scheme 2.0, for newer bots
    r.Use(middleware.LarkEventHandler())

    r.POST("/", func(c *gin.Context) {
        if msg, ok := middleware.GetMessage(c); ok { // => returns `*lark.EventMessage`
            fmt.Println(msg.Event.Text)
        }
    })
}

Example: examples/gin-middleware

Event v2

The default mode is event v1. However, Lark has provided event v2 and it applied automatically to newly created bots.

To enable EventV2, we use LarkEventHandler instead of LarkMessageHandler:

r.Use(middleware.LarkEventHandler())

Get the event (e.g. Message):

r.POST("/", func(c *gin.Context) {
    if evt, ok := middleware.GetEvent(c); ok { // => GetEvent instead of GetMessage
        if evt.Header.EventType == lark.EventTypeMessageReceived {
            if msg, err := evt.GetMessageReceived(); err == nil {
                fmt.Println(msg.Message.Content)
            }
            // you may have to parse other events
        }
    }
})

URL Binding

Only bind specific URL for events:

middleware.BindURLPrefix("/abc")

Token Verification

middleware.WithTokenVerfication("asodjiaoijoi121iuhiaud")

Encryption

middleware.WithEncryption("1231asda")

About

Copyright (c) go-lark Developers, 2018-2022.

About

Gin Middleware for go-lark

License:MIT License


Languages

Language:Go 100.0%