Documentation ¶
Index ¶
- func Respond(w http.ResponseWriter, data any) error
- type AppData
- type BlobData
- type Chat
- type ChatType
- type Configure
- type ErrorResponse
- type Event
- type EventType
- type GroupInfo
- type KeyMutex
- type LocationData
- type Message
- type MessageType
- type ReplyInfo
- type Request
- type RequestType
- type Response
- type ResponseType
- type User
- type UserInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Configure ¶
type Configure struct { Wechat struct { Version string `yaml:"version"` ListenPort int32 `yaml:"listen_port"` InitTimeout time.Duration `yaml:"init_timeout"` RequestTimeout time.Duration `yaml:"request_timeout"` Workdir string `yaml:"-"` } `yaml:"wechat"` Service struct { Addr string `yaml:"addr"` Secret string `yaml:"secret"` PingInterval time.Duration `yaml:"ping_interval"` } `yaml:"service"` Log struct { Level string `yaml:"level"` } `yaml:"log"` }
func LoadConfig ¶
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 ¶
type KeyMutex ¶
type KeyMutex interface { // Acquires a lock associated with the specified ID, creates the lock if one doesn't already exist. LockKey(id string) // Releases the lock associated with the specified ID. // Returns an error if the specified ID doesn't exist. UnlockKey(id string) error }
KeyMutex is a thread-safe interface for acquiring locks on arbitrary strings.
func NewHashed ¶
NewHashed returns a new instance of KeyMutex which hashes arbitrary keys to a fixed set of locks. `n` specifies number of locks, if n <= 0, we use number of cpus. Note that because it uses fixed set of locks, different keys may share same lock, so it's possible to wait on same lock.
type LocationData ¶
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 ¶
type MessageType ¶
type MessageType int
const ( MsgRequest MessageType = iota MsgResponse )
func (MessageType) String ¶
func (t MessageType) String() string
type Request ¶
type Request struct { Type RequestType `json:"type"` Data any `json:"data,omitempty"` }
func (*Request) UnmarshalJSON ¶
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 ¶
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
Click to show internal directories.
Click to hide internal directories.