Documentation ¶
Overview ¶
The plugin package defines the primary interfaces for interacting with a Mattermost server: the API and the hook interfaces.
The API interface is used to perform actions. The Hook interface is used to respond to actions.
Plugins should define a type that implements some of the methods from the Hook interface, then pass an instance of that object into the rpcplugin package's Main function (See the HelloWorld example.).
Example (HelloUser) ¶
This example demonstrates a plugin that handles HTTP requests which respond by greeting the user by name.
Output:
Example (HelloWorld) ¶
This example demonstrates a plugin that handles HTTP requests which respond by greeting the world.
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type API ¶
type API interface { // LoadPluginConfiguration loads the plugin's configuration. dest should be a pointer to a // struct that the configuration JSON can be unmarshalled to. LoadPluginConfiguration(dest interface{}) error // CreateUser creates a user. CreateUser(user *model.User) (*model.User, *model.AppError) // DeleteUser deletes a user. DeleteUser(userId string) *model.AppError // GetUser gets a user. GetUser(userId string) (*model.User, *model.AppError) // GetUserByEmail gets a user by their email address. GetUserByEmail(email string) (*model.User, *model.AppError) // GetUserByUsername gets a user by their username. GetUserByUsername(name string) (*model.User, *model.AppError) // UpdateUser updates a user. UpdateUser(user *model.User) (*model.User, *model.AppError) // CreateTeam creates a team. CreateTeam(team *model.Team) (*model.Team, *model.AppError) // DeleteTeam deletes a team. DeleteTeam(teamId string) *model.AppError // GetTeam gets a team. GetTeam(teamId string) (*model.Team, *model.AppError) // GetTeamByName gets a team by its name. GetTeamByName(name string) (*model.Team, *model.AppError) // UpdateTeam updates a team. UpdateTeam(team *model.Team) (*model.Team, *model.AppError) // CreateChannel creates a channel. CreateChannel(channel *model.Channel) (*model.Channel, *model.AppError) // DeleteChannel deletes a channel. DeleteChannel(channelId string) *model.AppError // GetChannel gets a channel. GetChannel(channelId string) (*model.Channel, *model.AppError) // GetChannelByName gets a channel by its name. GetChannelByName(name, teamId string) (*model.Channel, *model.AppError) // GetDirectChannel gets a direct message channel. GetDirectChannel(userId1, userId2 string) (*model.Channel, *model.AppError) // GetGroupChannel gets a group message channel. GetGroupChannel(userIds []string) (*model.Channel, *model.AppError) // UpdateChannel updates a channel. UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) // CreatePost creates a post. CreatePost(post *model.Post) (*model.Post, *model.AppError) // DeletePost deletes a post. DeletePost(postId string) *model.AppError // GetPost gets a post. GetPost(postId string) (*model.Post, *model.AppError) // Update post updates a post. UpdatePost(post *model.Post) (*model.Post, *model.AppError) }
The API can be used to retrieve data or perform actions on behalf of the plugin. Most methods have direct counterparts in the REST API and very similar behavior.
Plugins can obtain access to the API by implementing the OnActivate hook.
type Hooks ¶
type Hooks interface { // OnActivate is invoked when the plugin is activated. Implementations will usually want to save // the api argument for later use. Loading configuration for the first time is also a commonly // done here. OnActivate(API) error // OnDeactivate is invoked when the plugin is deactivated. This is the plugin's last chance to // use the API, and the plugin will be terminated shortly after this invocation. OnDeactivate() error // OnConfigurationChange is invoked when configuration changes may have been made. OnConfigurationChange() error // ServeHTTP allows the plugin to implement the http.Handler interface. Requests destined for // the /plugins/{id} path will be routed to the plugin. // // The Mattermost-User-Id header will be present if (and only if) the request is by an // authenticated user. ServeHTTP(http.ResponseWriter, *http.Request) }
Methods from the Hooks interface can be used by a plugin to respond to events. Methods are likely to be added over time, and plugins are not expected to implement all of them. Instead, plugins are expected to implement a subset of them and pass an instance to plugin/rpcplugin.Main, which will take over execution of the process and add default behaviors for missing hooks.
type Supervisor ¶
Supervisor provides the interface for an object that controls the execution of a plugin. This type is only relevant to the server, and isn't used by the plugins themselves.
Directories ¶
Path | Synopsis |
---|---|
Package pluginenv provides high level functionality for discovering and launching plugins.
|
Package pluginenv provides high level functionality for discovering and launching plugins. |