Documentation ¶
Index ¶
- Constants
- Variables
- func Respond(w http.ResponseWriter, data interface{}) error
- func WriteBlankOK(w http.ResponseWriter)
- type AppService
- func (as *AppService) BotClient() *mautrix.Client
- func (as *AppService) BotIntent() *IntentAPI
- func (as *AppService) BotMXID() id.UserID
- func (as *AppService) CheckServerToken(w http.ResponseWriter, r *http.Request) (isValid bool)
- func (as *AppService) Client(userID id.UserID) *mautrix.Client
- func (as *AppService) GetLive(w http.ResponseWriter, r *http.Request)
- func (as *AppService) GetReady(w http.ResponseWriter, r *http.Request)
- func (as *AppService) GetRoom(w http.ResponseWriter, r *http.Request)
- func (as *AppService) GetUser(w http.ResponseWriter, r *http.Request)
- func (as *AppService) HasWebsocket() bool
- func (as *AppService) Init() (bool, error)
- func (as *AppService) Intent(userID id.UserID) *IntentAPI
- func (as *AppService) NewIntentAPI(localpart string) *IntentAPI
- func (as *AppService) PrepareWebsocket()
- func (as *AppService) PutTransaction(w http.ResponseWriter, r *http.Request)
- func (as *AppService) RequestWebsocket(ctx context.Context, cmd *WebsocketRequest, response interface{}) error
- func (as *AppService) Save(path string) error
- func (as *AppService) SendWebsocket(cmd *WebsocketRequest) error
- func (as *AppService) SetWebsocketCommandHandler(cmd string, handler WebsocketHandler)
- func (as *AppService) Start()
- func (as *AppService) StartWebsocket(baseURL string, onConnect func()) error
- func (as *AppService) Stop()
- func (as *AppService) UpdateState(evt *event.Event)
- func (as *AppService) YAML() (string, error)
- type BasicStateStore
- func (store *BasicStateStore) GetMember(roomID id.RoomID, userID id.UserID) *event.MemberEventContent
- func (store *BasicStateStore) GetMembership(roomID id.RoomID, userID id.UserID) event.Membership
- func (store *BasicStateStore) GetPowerLevel(roomID id.RoomID, userID id.UserID) int
- func (store *BasicStateStore) GetPowerLevelRequirement(roomID id.RoomID, eventType event.Type) int
- func (store *BasicStateStore) GetPowerLevels(roomID id.RoomID) (levels *event.PowerLevelsEventContent)
- func (store *BasicStateStore) GetRoomMembers(roomID id.RoomID) map[id.UserID]*event.MemberEventContent
- func (store *BasicStateStore) HasPowerLevel(roomID id.RoomID, userID id.UserID, eventType event.Type) bool
- func (store *BasicStateStore) IsInRoom(roomID id.RoomID, userID id.UserID) bool
- func (store *BasicStateStore) IsInvited(roomID id.RoomID, userID id.UserID) bool
- func (store *BasicStateStore) IsMembership(roomID id.RoomID, userID id.UserID, allowedMemberships ...event.Membership) bool
- func (store *BasicStateStore) IsRegistered(userID id.UserID) bool
- func (store *BasicStateStore) MarkRegistered(userID id.UserID)
- func (store *BasicStateStore) SetMember(roomID id.RoomID, userID id.UserID, member *event.MemberEventContent)
- func (store *BasicStateStore) SetMembership(roomID id.RoomID, userID id.UserID, membership event.Membership)
- func (store *BasicStateStore) SetPowerLevels(roomID id.RoomID, levels *event.PowerLevelsEventContent)
- func (store *BasicStateStore) TryGetMember(roomID id.RoomID, userID id.UserID) (member *event.MemberEventContent, ok bool)
- type CloseCommand
- type DeviceListHandler
- type EnsureJoinedParams
- type Error
- type ErrorCode
- type ErrorResponse
- type EventHandler
- type EventListener
- type EventProcessor
- func (ep *EventProcessor) Dispatch(evt *event.Event)
- func (ep *EventProcessor) DispatchDeviceList(dl *mautrix.DeviceLists)
- func (ep *EventProcessor) DispatchOTK(otk *mautrix.OTKCount)
- func (ep *EventProcessor) On(evtType event.Type, handler EventHandler)
- func (ep *EventProcessor) OnDeviceList(handler DeviceListHandler)
- func (ep *EventProcessor) OnOTK(handler OTKHandler)
- func (ep *EventProcessor) Start()
- func (ep *EventProcessor) Stop()
- type ExecMode
- type FileFormatData
- type HostConfig
- type IntentAPI
- func (intent *IntentAPI) AddDoublePuppetValue(into interface{}) interface{}
- func (intent *IntentAPI) BanUser(roomID id.RoomID, req *mautrix.ReqBanUser, ...) (resp *mautrix.RespBanUser, err error)
- func (intent *IntentAPI) EnsureInvited(roomID id.RoomID, userID id.UserID) error
- func (intent *IntentAPI) EnsureJoined(roomID id.RoomID, extra ...EnsureJoinedParams) error
- func (intent *IntentAPI) EnsureRegistered() error
- func (intent *IntentAPI) InviteUser(roomID id.RoomID, req *mautrix.ReqInviteUser, ...) (resp *mautrix.RespInviteUser, err error)
- func (intent *IntentAPI) JoinRoomByID(roomID id.RoomID, extraContent ...map[string]interface{}) (resp *mautrix.RespJoinRoom, err error)
- func (intent *IntentAPI) JoinedMembers(roomID id.RoomID) (resp *mautrix.RespJoinedMembers, err error)
- func (intent *IntentAPI) KickUser(roomID id.RoomID, req *mautrix.ReqKickUser, ...) (resp *mautrix.RespKickUser, err error)
- func (intent *IntentAPI) LeaveRoom(roomID id.RoomID, extra ...interface{}) (resp *mautrix.RespLeaveRoom, err error)
- func (intent *IntentAPI) Member(roomID id.RoomID, userID id.UserID) *event.MemberEventContent
- func (intent *IntentAPI) Members(roomID id.RoomID, req ...mautrix.ReqMembers) (resp *mautrix.RespMembers, err error)
- func (intent *IntentAPI) PowerLevels(roomID id.RoomID) (pl *event.PowerLevelsEventContent, err error)
- func (intent *IntentAPI) RedactEvent(roomID id.RoomID, eventID id.EventID, extra ...mautrix.ReqRedact) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) Register() error
- func (intent *IntentAPI) SendCustomMembershipEvent(roomID id.RoomID, target id.UserID, membership event.Membership, reason string, ...) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendImage(roomID id.RoomID, body string, url id.ContentURI) (*mautrix.RespSendEvent, error)deprecated
- func (intent *IntentAPI) SendMassagedMessageEvent(roomID id.RoomID, eventType event.Type, contentJSON interface{}, ts int64) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendMassagedStateEvent(roomID id.RoomID, eventType event.Type, stateKey string, ...) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendMessageEvent(roomID id.RoomID, eventType event.Type, contentJSON interface{}) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendNotice(roomID id.RoomID, text string) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendStateEvent(roomID id.RoomID, eventType event.Type, stateKey string, ...) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendText(roomID id.RoomID, text string) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SendVideo(roomID id.RoomID, body string, url id.ContentURI) (*mautrix.RespSendEvent, error)deprecated
- func (intent *IntentAPI) SetAvatarURL(avatarURL id.ContentURI) error
- func (intent *IntentAPI) SetDisplayName(displayName string) error
- func (intent *IntentAPI) SetPowerLevel(roomID id.RoomID, userID id.UserID, level int) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SetPowerLevels(roomID id.RoomID, levels *event.PowerLevelsEventContent) (resp *mautrix.RespSendEvent, err error)
- func (intent *IntentAPI) SetRoomAvatar(roomID id.RoomID, avatarURL id.ContentURI) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SetRoomName(roomID id.RoomID, roomName string) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) SetRoomTopic(roomID id.RoomID, topic string) (*mautrix.RespSendEvent, error)
- func (intent *IntentAPI) State(roomID id.RoomID) (mautrix.RoomStateMap, error)
- func (intent *IntentAPI) StateEvent(roomID id.RoomID, eventType event.Type, stateKey string, ...) error
- func (intent *IntentAPI) UnbanUser(roomID id.RoomID, req *mautrix.ReqUnbanUser, ...) (resp *mautrix.RespUnbanUser, err error)
- func (intent *IntentAPI) UserTyping(roomID id.RoomID, typing bool, timeout time.Duration) (resp *mautrix.RespTyping, err error)
- func (intent *IntentAPI) Whoami() (*mautrix.RespWhoami, error)
- type LogConfig
- type MeowWebsocketCloseCode
- type Namespace
- type NamespaceList
- type Namespaces
- type OTKCountMap
- type OTKHandler
- type QueryHandler
- type QueryHandlerStub
- type Registration
- type StateStore
- type Transaction
- type TransactionIDCache
- type TypingStateStore
- type WebsocketCommand
- type WebsocketHandler
- type WebsocketMessage
- type WebsocketRequest
- type WebsocketTransaction
Constants ¶
const DoublePuppetKey = "fi.mau.double_puppet_source"
Variables ¶
var ( ErrWebsocketManualStop = errors.New("the websocket was disconnected manually") ErrWebsocketOverridden = errors.New("a new call to StartWebsocket overrode the previous connection") ErrWebsocketUnknownError = errors.New("an unknown error occurred") ErrWebsocketNotConnected = errors.New("websocket not connected") ErrWebsocketClosed = errors.New("websocket closed before response received") )
var EventChannelSize = 64
EventChannelSize is the size for the Events channel in Appservice instances.
var OTKChannelSize = 4
Functions ¶
func Respond ¶
func Respond(w http.ResponseWriter, data interface{}) error
Respond responds to a HTTP request with a JSON object.
func WriteBlankOK ¶
func WriteBlankOK(w http.ResponseWriter)
WriteBlankOK writes a blank OK message as a reply to a HTTP request.
Types ¶
type AppService ¶
type AppService struct { HomeserverDomain string `yaml:"homeserver_domain"` HomeserverURL string `yaml:"homeserver_url"` RegistrationPath string `yaml:"registration"` Host HostConfig `yaml:"host"` LogConfig LogConfig `yaml:"logging"` Registration *Registration `yaml:"-"` Log maulogger.Logger `yaml:"-"` Events chan *event.Event `yaml:"-"` DeviceLists chan *mautrix.DeviceLists `yaml:"-"` OTKCounts chan *mautrix.OTKCount `yaml:"-"` QueryHandler QueryHandler `yaml:"-"` StateStore StateStore `yaml:"-"` Router *mux.Router `yaml:"-"` UserAgent string `yaml:"-"` HTTPClient *http.Client DefaultHTTPRetries int Live bool Ready bool StopWebsocket func(error) // ProcessID is an identifier sent to the websocket proxy for debugging connections ProcessID string DoublePuppetValue string GetProfile func(userID id.UserID, roomID id.RoomID) *event.MemberEventContent // contains filtered or unexported fields }
AppService is the main config for all appservices. It also serves as the appservice instance struct.
func (*AppService) BotClient ¶
func (as *AppService) BotClient() *mautrix.Client
func (*AppService) BotIntent ¶
func (as *AppService) BotIntent() *IntentAPI
func (*AppService) BotMXID ¶
func (as *AppService) BotMXID() id.UserID
func (*AppService) CheckServerToken ¶
func (as *AppService) CheckServerToken(w http.ResponseWriter, r *http.Request) (isValid bool)
CheckServerToken checks if the given request originated from the Matrix homeserver.
func (*AppService) Client ¶
func (as *AppService) Client(userID id.UserID) *mautrix.Client
func (*AppService) GetLive ¶
func (as *AppService) GetLive(w http.ResponseWriter, r *http.Request)
func (*AppService) GetReady ¶
func (as *AppService) GetReady(w http.ResponseWriter, r *http.Request)
func (*AppService) GetRoom ¶
func (as *AppService) GetRoom(w http.ResponseWriter, r *http.Request)
GetRoom handles a /rooms GET call from the homeserver.
func (*AppService) GetUser ¶
func (as *AppService) GetUser(w http.ResponseWriter, r *http.Request)
GetUser handles a /users GET call from the homeserver.
func (*AppService) HasWebsocket ¶
func (as *AppService) HasWebsocket() bool
func (*AppService) Init ¶
func (as *AppService) Init() (bool, error)
Init initializes the logger and loads the registration of this appservice.
func (*AppService) NewIntentAPI ¶
func (as *AppService) NewIntentAPI(localpart string) *IntentAPI
func (*AppService) PrepareWebsocket ¶
func (as *AppService) PrepareWebsocket()
func (*AppService) PutTransaction ¶
func (as *AppService) PutTransaction(w http.ResponseWriter, r *http.Request)
PutTransaction handles a /transactions PUT call from the homeserver.
func (*AppService) RequestWebsocket ¶
func (as *AppService) RequestWebsocket(ctx context.Context, cmd *WebsocketRequest, response interface{}) error
func (*AppService) Save ¶
func (as *AppService) Save(path string) error
Save saves this config into a file at the given path.
func (*AppService) SendWebsocket ¶
func (as *AppService) SendWebsocket(cmd *WebsocketRequest) error
func (*AppService) SetWebsocketCommandHandler ¶
func (as *AppService) SetWebsocketCommandHandler(cmd string, handler WebsocketHandler)
func (*AppService) Start ¶
func (as *AppService) Start()
Start starts the HTTP server that listens for calls from the Matrix homeserver.
func (*AppService) StartWebsocket ¶
func (as *AppService) StartWebsocket(baseURL string, onConnect func()) error
func (*AppService) Stop ¶
func (as *AppService) Stop()
func (*AppService) UpdateState ¶
func (as *AppService) UpdateState(evt *event.Event)
func (*AppService) YAML ¶
func (as *AppService) YAML() (string, error)
YAML returns the config in YAML format.
type BasicStateStore ¶
type BasicStateStore struct { Registrations map[id.UserID]bool `json:"registrations"` Members map[id.RoomID]map[id.UserID]*event.MemberEventContent `json:"memberships"` PowerLevels map[id.RoomID]*event.PowerLevelsEventContent `json:"power_levels"` *TypingStateStore // contains filtered or unexported fields }
func (*BasicStateStore) GetMember ¶
func (store *BasicStateStore) GetMember(roomID id.RoomID, userID id.UserID) *event.MemberEventContent
func (*BasicStateStore) GetMembership ¶
func (store *BasicStateStore) GetMembership(roomID id.RoomID, userID id.UserID) event.Membership
func (*BasicStateStore) GetPowerLevel ¶
func (*BasicStateStore) GetPowerLevelRequirement ¶
func (*BasicStateStore) GetPowerLevels ¶
func (store *BasicStateStore) GetPowerLevels(roomID id.RoomID) (levels *event.PowerLevelsEventContent)
func (*BasicStateStore) GetRoomMembers ¶
func (store *BasicStateStore) GetRoomMembers(roomID id.RoomID) map[id.UserID]*event.MemberEventContent
func (*BasicStateStore) HasPowerLevel ¶
func (*BasicStateStore) IsMembership ¶
func (store *BasicStateStore) IsMembership(roomID id.RoomID, userID id.UserID, allowedMemberships ...event.Membership) bool
func (*BasicStateStore) IsRegistered ¶
func (store *BasicStateStore) IsRegistered(userID id.UserID) bool
func (*BasicStateStore) MarkRegistered ¶
func (store *BasicStateStore) MarkRegistered(userID id.UserID)
func (*BasicStateStore) SetMember ¶
func (store *BasicStateStore) SetMember(roomID id.RoomID, userID id.UserID, member *event.MemberEventContent)
func (*BasicStateStore) SetMembership ¶
func (store *BasicStateStore) SetMembership(roomID id.RoomID, userID id.UserID, membership event.Membership)
func (*BasicStateStore) SetPowerLevels ¶
func (store *BasicStateStore) SetPowerLevels(roomID id.RoomID, levels *event.PowerLevelsEventContent)
func (*BasicStateStore) TryGetMember ¶
func (store *BasicStateStore) TryGetMember(roomID id.RoomID, userID id.UserID) (member *event.MemberEventContent, ok bool)
type CloseCommand ¶
type CloseCommand struct { Code int `json:"-"` Command string `json:"command"` Status MeowWebsocketCloseCode `json:"status"` }
func (CloseCommand) Error ¶
func (cc CloseCommand) Error() string
type DeviceListHandler ¶
type DeviceListHandler func(otk *mautrix.DeviceLists, since string)
type EnsureJoinedParams ¶
type EnsureJoinedParams struct { IgnoreCache bool BotOverride *mautrix.Client }
type Error ¶
type Error struct { HTTPStatus int `json:"-"` ErrorCode ErrorCode `json:"errcode"` Message string `json:"error"` }
Error represents a Matrix protocol error.
func (Error) Write ¶
func (err Error) Write(w http.ResponseWriter)
type ErrorCode ¶
type ErrorCode string
ErrorCode is the machine-readable code in an Error.
const ( ErrUnknownToken ErrorCode = "M_UNKNOWN_TOKEN" ErrBadJSON ErrorCode = "M_BAD_JSON" ErrNotJSON ErrorCode = "M_NOT_JSON" ErrUnknown ErrorCode = "M_UNKNOWN" )
Native ErrorCodes
const (
ErrNoTransactionID ErrorCode = "NET.MAUNIUM.NO_TRANSACTION_ID"
)
Custom ErrorCodes
type ErrorResponse ¶
func (*ErrorResponse) Error ¶
func (er *ErrorResponse) Error() string
type EventHandler ¶
type EventListener ¶
EventListener is a function that receives events.
type EventProcessor ¶
type EventProcessor struct { ExecMode ExecMode // contains filtered or unexported fields }
func NewEventProcessor ¶
func NewEventProcessor(as *AppService) *EventProcessor
func (*EventProcessor) Dispatch ¶
func (ep *EventProcessor) Dispatch(evt *event.Event)
func (*EventProcessor) DispatchDeviceList ¶
func (ep *EventProcessor) DispatchDeviceList(dl *mautrix.DeviceLists)
func (*EventProcessor) DispatchOTK ¶
func (ep *EventProcessor) DispatchOTK(otk *mautrix.OTKCount)
func (*EventProcessor) On ¶
func (ep *EventProcessor) On(evtType event.Type, handler EventHandler)
func (*EventProcessor) OnDeviceList ¶
func (ep *EventProcessor) OnDeviceList(handler DeviceListHandler)
func (*EventProcessor) OnOTK ¶
func (ep *EventProcessor) OnOTK(handler OTKHandler)
func (*EventProcessor) Start ¶
func (ep *EventProcessor) Start()
func (*EventProcessor) Stop ¶
func (ep *EventProcessor) Stop()
type FileFormatData ¶
type HostConfig ¶
type HostConfig struct { Hostname string `yaml:"hostname"` Port uint16 `yaml:"port"` TLSKey string `yaml:"tls_key,omitempty"` TLSCert string `yaml:"tls_cert,omitempty"` }
HostConfig contains info about how to host the appservice.
func (*HostConfig) Address ¶
func (hc *HostConfig) Address() string
Address gets the whole address of the Appservice.
type IntentAPI ¶
type IntentAPI struct { *mautrix.Client Localpart string UserID id.UserID IsCustomPuppet bool // contains filtered or unexported fields }
func (*IntentAPI) AddDoublePuppetValue ¶
func (intent *IntentAPI) AddDoublePuppetValue(into interface{}) interface{}
func (*IntentAPI) EnsureInvited ¶
func (*IntentAPI) EnsureJoined ¶
func (intent *IntentAPI) EnsureJoined(roomID id.RoomID, extra ...EnsureJoinedParams) error
func (*IntentAPI) EnsureRegistered ¶
func (*IntentAPI) InviteUser ¶
func (*IntentAPI) JoinRoomByID ¶
func (*IntentAPI) JoinedMembers ¶
func (*IntentAPI) PowerLevels ¶
func (*IntentAPI) RedactEvent ¶
func (*IntentAPI) SendCustomMembershipEvent ¶
func (*IntentAPI) SendMassagedMessageEvent ¶
func (*IntentAPI) SendMassagedStateEvent ¶
func (*IntentAPI) SendMessageEvent ¶
func (*IntentAPI) SendNotice ¶
func (*IntentAPI) SendStateEvent ¶
func (*IntentAPI) SetAvatarURL ¶
func (intent *IntentAPI) SetAvatarURL(avatarURL id.ContentURI) error
func (*IntentAPI) SetDisplayName ¶
func (*IntentAPI) SetPowerLevel ¶
func (*IntentAPI) SetPowerLevels ¶
func (*IntentAPI) SetRoomAvatar ¶
func (*IntentAPI) SetRoomName ¶
func (*IntentAPI) SetRoomTopic ¶
func (*IntentAPI) StateEvent ¶
func (*IntentAPI) UserTyping ¶
type LogConfig ¶
type LogConfig struct { Directory string `yaml:"directory"` FileNameFormat string `yaml:"file_name_format"` FileDateFormat string `yaml:"file_date_format"` FileMode uint32 `yaml:"file_mode"` TimestampFormat string `yaml:"timestamp_format"` RawPrintLevel string `yaml:"print_level"` JSONStdout bool `yaml:"print_json"` JSONFile bool `yaml:"file_json"` PrintLevel int `yaml:"-"` }
LogConfig contains configs for the logger.
func (LogConfig) Configure ¶
func (lc LogConfig) Configure(log maulogger.Logger)
Configure configures a mauLogger instance with the data in this struct.
func (LogConfig) GetFileFormat ¶
func (lc LogConfig) GetFileFormat() maulogger.LoggerFileFormat
GetFileFormat returns a mauLogger-compatible logger file format based on the data in the struct.
func (*LogConfig) MarshalYAML ¶
func (*LogConfig) UnmarshalYAML ¶
type MeowWebsocketCloseCode ¶
type MeowWebsocketCloseCode string
const ( MeowServerShuttingDown MeowWebsocketCloseCode = "server_shutting_down" MeowConnectionReplaced MeowWebsocketCloseCode = "conn_replaced" )
func (MeowWebsocketCloseCode) String ¶
func (mwcc MeowWebsocketCloseCode) String() string
type Namespace ¶
type Namespace struct { Regex string `yaml:"regex" json:"regex"` Exclusive bool `yaml:"exclusive" json:"exclusive"` }
Namespace is a reserved namespace in any area.
type NamespaceList ¶
type NamespaceList []Namespace
type Namespaces ¶
type Namespaces struct { UserIDs NamespaceList `yaml:"users,omitempty" json:"users,omitempty"` RoomAliases NamespaceList `yaml:"aliases,omitempty" json:"aliases,omitempty"` RoomIDs NamespaceList `yaml:"rooms,omitempty" json:"rooms,omitempty"` }
Namespaces contains the three areas that appservices can reserve parts of.
type OTKHandler ¶
type OTKHandler func(otk *mautrix.OTKCount)
type QueryHandler ¶
QueryHandler handles room alias and user ID queries from the homeserver.
type QueryHandlerStub ¶
type QueryHandlerStub struct{}
func (*QueryHandlerStub) QueryAlias ¶
func (qh *QueryHandlerStub) QueryAlias(alias string) bool
type Registration ¶
type Registration struct { ID string `yaml:"id" json:"id"` URL string `yaml:"url" json:"url"` AppToken string `yaml:"as_token" json:"as_token"` ServerToken string `yaml:"hs_token" json:"hs_token"` SenderLocalpart string `yaml:"sender_localpart" json:"sender_localpart"` RateLimited *bool `yaml:"rate_limited,omitempty" json:"rate_limited,omitempty"` Namespaces Namespaces `yaml:"namespaces" json:"namespaces"` Protocols []string `yaml:"protocols,omitempty" json:"protocols,omitempty"` SoruEphemeralEvents bool `yaml:"de.sorunome.msc2409.push_ephemeral,omitempty" json:"de.sorunome.msc2409.push_ephemeral,omitempty"` EphemeralEvents bool `yaml:"push_ephemeral,omitempty" json:"push_ephemeral,omitempty"` }
Registration contains the data in a Matrix appservice registration. See https://spec.matrix.org/v1.2/application-service-api/#registration
func CreateRegistration ¶
func CreateRegistration() *Registration
CreateRegistration creates a Registration with random appservice and homeserver tokens.
func LoadRegistration ¶
func LoadRegistration(path string) (*Registration, error)
LoadRegistration loads a YAML file and turns it into a Registration.
func (*Registration) Save ¶
func (reg *Registration) Save(path string) error
Save saves this Registration into a file at the given path.
func (*Registration) YAML ¶
func (reg *Registration) YAML() (string, error)
YAML returns the registration in YAML format.
type StateStore ¶
type StateStore interface { IsRegistered(userID id.UserID) bool MarkRegistered(userID id.UserID) IsTyping(roomID id.RoomID, userID id.UserID) bool SetTyping(roomID id.RoomID, userID id.UserID, timeout time.Duration) IsInRoom(roomID id.RoomID, userID id.UserID) bool IsInvited(roomID id.RoomID, userID id.UserID) bool IsMembership(roomID id.RoomID, userID id.UserID, allowedMemberships ...event.Membership) bool GetMember(roomID id.RoomID, userID id.UserID) *event.MemberEventContent TryGetMember(roomID id.RoomID, userID id.UserID) (*event.MemberEventContent, bool) SetMembership(roomID id.RoomID, userID id.UserID, membership event.Membership) SetMember(roomID id.RoomID, userID id.UserID, member *event.MemberEventContent) SetPowerLevels(roomID id.RoomID, levels *event.PowerLevelsEventContent) GetPowerLevels(roomID id.RoomID) *event.PowerLevelsEventContent GetPowerLevel(roomID id.RoomID, userID id.UserID) int GetPowerLevelRequirement(roomID id.RoomID, eventType event.Type) int HasPowerLevel(roomID id.RoomID, userID id.UserID, eventType event.Type) bool }
func NewBasicStateStore ¶
func NewBasicStateStore() StateStore
type Transaction ¶
type Transaction struct { Events []*event.Event `json:"events"` EphemeralEvents []*event.Event `json:"ephemeral,omitempty"` DeviceLists *mautrix.DeviceLists `json:"device_lists,omitempty"` DeviceOTKCount OTKCountMap `json:"device_one_time_keys_count,omitempty"` MSC2409EphemeralEvents []*event.Event `json:"de.sorunome.msc2409.ephemeral,omitempty"` MSC3202DeviceLists *mautrix.DeviceLists `json:"org.matrix.msc3202.device_lists,omitempty"` MSC3202DeviceOTKCount OTKCountMap `json:"org.matrix.msc3202.device_one_time_keys_count,omitempty"` }
Transaction contains a list of events.
func (*Transaction) ContentString ¶
func (txn *Transaction) ContentString() string
type TransactionIDCache ¶
type TransactionIDCache struct {
// contains filtered or unexported fields
}
func NewTransactionIDCache ¶
func NewTransactionIDCache(size int) *TransactionIDCache
func (*TransactionIDCache) IsProcessed ¶
func (txnIDC *TransactionIDCache) IsProcessed(txnID string) bool
func (*TransactionIDCache) MarkProcessed ¶
func (txnIDC *TransactionIDCache) MarkProcessed(txnID string)
type TypingStateStore ¶
type TypingStateStore struct {
// contains filtered or unexported fields
}
func NewTypingStateStore ¶
func NewTypingStateStore() *TypingStateStore
type WebsocketCommand ¶
type WebsocketCommand struct { ReqID int `json:"id,omitempty"` Command string `json:"command"` Data json.RawMessage `json:"data"` }
func (*WebsocketCommand) MakeResponse ¶
func (wsc *WebsocketCommand) MakeResponse(ok bool, data interface{}) *WebsocketRequest
type WebsocketHandler ¶
type WebsocketHandler func(WebsocketCommand) (ok bool, data interface{})
type WebsocketMessage ¶
type WebsocketMessage struct { WebsocketTransaction WebsocketCommand }
type WebsocketRequest ¶
type WebsocketTransaction ¶
type WebsocketTransaction struct { Status string `json:"status"` TxnID string `json:"txn_id"` Transaction }