wechat

package
v0.0.0-...-57ebd91 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2024 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrWebsocketNotConnected = errors.New("websocket not connected")
	ErrWebsocketClosed       = errors.New("websocket closed before response received")
)

Functions

func Respond

func Respond(w http.ResponseWriter, data any) error

func ToMessageType

func ToMessageType(t EventType) event.MessageType

Types

type AppData

type AppData struct {
	Title       string `json:"title,omitempty"`
	Description string `json:"desc,omitempty"`
	Source      string `json:"source,omitempty"`
	URL         string `json:"url,omitempty"`

	Content string               `json:"raw,omitempty"`
	Blobs   map[string]*BlobData `json:"blobs,omitempty"`
}

type BlobData

type BlobData struct {
	Name   string `json:"name,omitempty"`
	Mime   string `json:"mime,omitempty"`
	Binary []byte `json:"binary"`
}

type Chat

type Chat struct {
	ID    string   `json:"id"`
	Type  ChatType `json:"type"`
	Title string   `json:"title,omitempty"`
}

type ChatType

type ChatType int
const (
	ChatPrivate ChatType = iota
	ChatGroup
)

func (ChatType) String

func (t ChatType) String() string

type Conn

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

type ErrorResponse

type ErrorResponse struct {
	HTTPStatus int    `json:"-"`
	Code       string `json:"code"`
	Message    string `json:"message"`
}

func (*ErrorResponse) Error

func (er *ErrorResponse) Error() string

func (ErrorResponse) Write

func (er ErrorResponse) Write(w http.ResponseWriter)

type Event

type Event struct {
	ID        string     `json:"id"`
	ThreadID  string     `json:"thread_id,omitempty"`
	Timestamp int64      `json:"timestamp"`
	From      User       `json:"from"`
	Chat      Chat       `json:"chat"`
	Type      EventType  `json:"type"`
	Content   string     `json:"content,omitempty"`
	Mentions  []string   `json:"mentions,omitempty"`
	Reply     *ReplyInfo `json:"reply,omitempty"`
	Data      any        `json:"data,omitempty"`
}

func (*Event) UnmarshalJSON

func (o *Event) UnmarshalJSON(data []byte) error

type EventType

type EventType int
const (
	EventText EventType = iota
	EventPhoto
	EventSticker
	EventAudio
	EventVideo
	EventFile
	EventLocation
	EventNotice
	EventApp
	EventRevoke
	EventVoIP
	EventSystem
)

func ToEventType

func ToEventType(t event.MessageType) EventType

func (EventType) String

func (t EventType) String() string

type GroupInfo

type GroupInfo struct {
	ID      string   `json:"id"`
	Name    string   `json:"name"`
	Avatar  string   `json:"avatar,omitempty"`
	Notice  string   `json:"notice,omitempty"`
	Members []string `json:"members"`
}

type LocationData

type LocationData struct {
	Name      string  `json:"name,omitempty"`
	Address   string  `json:"address,omitempty"`
	Longitude float64 `json:"longitude"`
	Latitude  float64 `json:"latitude"`
}

type Message

type Message struct {
	ID   int64       `json:"id"`
	MXID string      `json:"mxid"`
	Type MessageType `json:"type"`
	Data any         `json:"data,omitempty"`
}

func (*Message) UnmarshalJSON

func (o *Message) UnmarshalJSON(data []byte) error

type MessageType

type MessageType int
const (
	MsgRequest MessageType = iota
	MsgResponse
)

func (MessageType) String

func (t MessageType) String() string

type ReplyInfo

type ReplyInfo struct {
	ID        string `json:"id"`
	Timestamp int64  `json:"ts"`
	Sender    string `json:"sender"`
	Content   string `json:"content"`
}

type Request

type Request struct {
	Type RequestType `json:"type"`
	Data any         `json:"data,omitempty"`
}

func (*Request) UnmarshalJSON

func (o *Request) UnmarshalJSON(data []byte) error

type RequestType

type RequestType int
const (
	ReqEvent RequestType = iota
	ReqConnect
	ReqDisconnect
	ReqLoginQR
	ReqIsLogin
	ReqGetSelf
	ReqGetUserInfo
	ReqGetGroupInfo
	ReqGetGroupMembers
	ReqGetGroupMemberNickname
	ReqGetFriendList
	ReqGetGroupList
)

func (RequestType) String

func (t RequestType) String() string

type Response

type Response struct {
	Type  ResponseType   `json:"type"`
	Error *ErrorResponse `json:"error,omitempty"`
	Data  any            `json:"data,omitempty"`
}

func (*Response) UnmarshalJSON

func (o *Response) UnmarshalJSON(data []byte) error

type ResponseType

type ResponseType int
const (
	RespEvent ResponseType = iota
	RespConnect
	RespDisconnect
	RespLoginQR
	RespIsLogin
	RespGetSelf
	RespGetUserInfo
	RespGetGroupInfo
	RespGetGroupMembers
	RespGetGroupMemberNickname
	RespGetFriendList
	RespGetGroupList
)

func (ResponseType) String

func (t ResponseType) String() string

type User

type User struct {
	ID       string `json:"id"`
	Username string `json:"username"`
	Remark   string `json:"remark,omitempty"`
}

type UserInfo

type UserInfo struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Avatar string `json:"avatar,omitempty"`
	Remark string `json:"remark,omitempty"`
}

type WechatClient

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

func (*WechatClient) Connect

func (wc *WechatClient) Connect() error

func (*WechatClient) Disconnect

func (wc *WechatClient) Disconnect() error

func (*WechatClient) GetFriendList

func (wc *WechatClient) GetFriendList() []*UserInfo

func (*WechatClient) GetGroupInfo

func (wc *WechatClient) GetGroupInfo(wxid string) *GroupInfo

func (*WechatClient) GetGroupList

func (wc *WechatClient) GetGroupList() []*GroupInfo

func (*WechatClient) GetGroupMemberNickname

func (wc *WechatClient) GetGroupMemberNickname(group, wxid string) string

func (*WechatClient) GetGroupMembers

func (wc *WechatClient) GetGroupMembers(wxid string) []string

func (*WechatClient) GetSelf

func (wc *WechatClient) GetSelf() *UserInfo

func (*WechatClient) GetUserInfo

func (wc *WechatClient) GetUserInfo(wxid string) *UserInfo

func (*WechatClient) IsLoggedIn

func (wc *WechatClient) IsLoggedIn() bool

func (*WechatClient) LoginWithQRCode

func (wc *WechatClient) LoginWithQRCode() []byte

func (*WechatClient) SendEvent

func (wc *WechatClient) SendEvent(event *Event) (*Event, error)

func (*WechatClient) SetProcessFunc

func (wc *WechatClient) SetProcessFunc(f func(*Event))

type WechatService

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

func NewWechatService

func NewWechatService(addr, secret string, log zerolog.Logger) *WechatService

func (*WechatService) NewClient

func (ws *WechatService) NewClient(mxid string) *WechatClient

func (*WechatService) ServeHTTP

func (ws *WechatService) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*WechatService) Start

func (ws *WechatService) Start()

func (*WechatService) Stop

func (ws *WechatService) Stop()

Jump to

Keyboard shortcuts

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