larkgin

package module
v1.1.0-beta.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2022 License: MIT Imports: 7 Imported by: 2

README

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.

Documentation

Index

Constants

View Source
const DefaultLarkMessageKey = "go-lark-message"

DefaultLarkMessageKey still public for compatibility

Variables

This section is empty.

Functions

This section is empty.

Types

type LarkMiddleware

type LarkMiddleware struct {
	// contains filtered or unexported fields
}

LarkMiddleware .

func NewLarkMiddleware

func NewLarkMiddleware() *LarkMiddleware

NewLarkMiddleware .

func (*LarkMiddleware) BindURLPrefix

func (opt *LarkMiddleware) BindURLPrefix(prefix string) *LarkMiddleware

BindURLPrefix .

func (LarkMiddleware) GetEvent added in v1.1.0

func (opt LarkMiddleware) GetEvent(c *gin.Context) (*lark.EventV2, bool)

GetEvent should call GetEvent if you're using EventV2

func (LarkMiddleware) GetMessage

func (opt LarkMiddleware) GetMessage(c *gin.Context) (msg *lark.EventMessage, ok bool)

GetMessage from gin context

func (LarkMiddleware) LarkChallengeHandler

func (opt LarkMiddleware) LarkChallengeHandler() gin.HandlerFunc

LarkChallengeHandler Lark challenge handler

func (LarkMiddleware) LarkEventHandler added in v1.1.0

func (opt LarkMiddleware) LarkEventHandler() gin.HandlerFunc

LarkEventHandler handle lark event v2

func (LarkMiddleware) LarkMessageHandler

func (opt LarkMiddleware) LarkMessageHandler() gin.HandlerFunc

LarkMessageHandler Lark message handler

func (*LarkMiddleware) SetMessageKey

func (opt *LarkMiddleware) SetMessageKey(key string) *LarkMiddleware

SetMessageKey .

func (*LarkMiddleware) WithEncryption

func (opt *LarkMiddleware) WithEncryption(key string) *LarkMiddleware

WithEncryption .

func (*LarkMiddleware) WithTokenVerification

func (opt *LarkMiddleware) WithTokenVerification(token string) *LarkMiddleware

WithTokenVerification .

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL