dingding

package module
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2021 License: Apache-2.0 Imports: 17 Imported by: 0

README

fastwego/dingding

A fast dingding development sdk written in Golang

GoDoc Go Report Card

快速开始 & demo

go get github.com/fastwego/dingding

// 钉钉 AccessToken 管理器
atm := &dingding.DefaultAccessTokenManager{
    Id:   DingConfig["AppKey"],
    Name: "access_token",
    GetRefreshRequestFunc: func() *http.Request {
        params := url.Values{}
        params.Add("appkey", DingConfig["AppKey"])
        params.Add("appsecret", DingConfig["AppSecret"])
        req, _ := http.NewRequest(http.MethodGet, dingding.ServerUrl+"/gettoken?"+params.Encode(), nil)

        return req
    },
    Cache: file.New(os.TempDir()),
}

// 钉钉 客户端
DingClient = dingding.NewClient(atm)

// 调用 api
params := url.Values{}
params.Add("mobile", "13800138000")
req, _ := http.NewRequest(http.MethodGet, "/user/get_by_mobile?"+params.Encode(), nil)
resp, err := DingClient.Do(req)

完整的演示项目:

https://github.com/fastwego/dingding-demo

架构设计

sdk

框架特点

  • 使用 Go 语言,开发快、编译快、部署快、运行快,轻松服务海量用户
  • 丰富的文档演示代码 ,快速上手,5 分钟即可搭建一套完整的钉钉服务
  • 独立清晰的模块划分,快速熟悉整个 sdk,没有意外,一切都是你期望的样子
  • 直接调用接口,最少封装,自由嵌入业务逻辑
  • 简单而强大的 AccessToken 管理:
    • 默认将 AccessToken 缓存到本机临时目录下
    • 过期自动重新获取
    • 支持自定义 AccessToken 的获取和管理方法,扩展应用场景
    • 支持企业内部应用/第三方企业应用/第三方个人应用不同类型的 AccessToken 管理
  • 接口调用失败自动重试
  • 事件回调加解密处理
  • 丰富完整&支持自定义的日志
  • 支持自定义 http.Client:
    • 默认使用 http.DefaultClient

活跃的开发者社区

fastwego 是一套丰富的 Go 开发框架,支持钉钉、飞书、微信等服务,拥有庞大的开发者用户群体

你遇到的所有问题几乎都可以在社区找到解决方案

欢迎提交 pull request / issue / 文档,一起让钉钉开发更快更好!

Faster we go together!

加入开发者交流群

Documentation

Overview

钉钉开发 SDK

See: https://ding-doc.dingtalk.com/

Index

Constants

This section is empty.

Variables

View Source
var (
	ServerUrl = "https://oapi.dingtalk.com"
	UserAgent = "fastwego/dingding"
)
View Source
var Logger = log.New(os.Stdout, "[fastwego/dingding] ", log.LstdFlags|log.Llongfile)

日志记录器

Functions

This section is empty.

Types

type AccessTokenManager

type AccessTokenManager interface {
	GetName() (name string)
	GetAccessToken() (accessToken string, err error)
}

type Client

type Client struct {
	AccessTokenManager AccessTokenManager
	HttpClient         *http.Client
}

Client 用于向接口发送请求

func NewClient

func NewClient(AccessTokenManager AccessTokenManager) (client *Client)

NewClient

func (*Client) Do

func (client *Client) Do(req *http.Request) (resp []byte, err error)

Do 执行 请求

type Crypto

type Crypto struct {
	Token          string
	EncodingAESKey string
	SuiteKey       string
}

func NewCrypto

func NewCrypto(token, encodingAESKey, suiteKey string) *Crypto

NewCrypto 创建加解密处理器

func (*Crypto) GetDecryptMsg

func (c *Crypto) GetDecryptMsg(timestamp, nonce, signature, encryptMsg string) (decryptMsg []byte, err error)

GetDecryptMsg 解密消息

func (*Crypto) GetEncryptMsg

func (c *Crypto) GetEncryptMsg(msg string) (resp map[string]string)

GetEncryptMsg 加密消息

type DefaultAccessTokenManager

type DefaultAccessTokenManager struct {
	Id                    string
	Name                  string
	GetRefreshRequestFunc getRefreshRequestFunc
	Cache                 cachego.Cache
}

func (*DefaultAccessTokenManager) GetAccessToken

func (m *DefaultAccessTokenManager) GetAccessToken() (accessToken string, err error)

GetAccessToken

func (*DefaultAccessTokenManager) GetName

func (m *DefaultAccessTokenManager) GetName() (name string)

GetName 获取 access_token 参数名称

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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