goapp

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: May 26, 2023 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

goapp is an EXPERIMENTAL package to make simple Mattermost apps written in go.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AppendBindings

func AppendBindings(orig []apps.Binding, extra ...*apps.Binding) []apps.Binding

func MakeBindings

func MakeBindings(creq CallRequest, bindables []Bindable) []apps.Binding

func OAuth2Logger

func OAuth2Logger(l utils.Logger, a *apps.OAuth2App, u *User) utils.Logger

Types

type App

type App struct {
	Manifest apps.Manifest

	Mode   apps.DeployType
	Router *mux.Router
	// contains filtered or unexported fields
}

func MakeApp

func MakeApp(m apps.Manifest, opts ...AppOption) (*App, error)

func MakeAppOrPanic

func MakeAppOrPanic(m apps.Manifest, opts ...AppOption) *App

func (*App) Bindings

func (app *App) Bindings(creq CallRequest) []apps.Binding

func (*App) HandleCall

func (app *App) HandleCall(p string, h HandlerFunc)

func (*App) NewTestServer

func (app *App) NewTestServer(t testing.TB) *httptest.Server

func (*App) RemoveConnectedUser

func (app *App) RemoveConnectedUser(creq CallRequest) error

func (*App) RunHTTP

func (app *App) RunHTTP()

func (*App) StoreConnectedUser

func (app *App) StoreConnectedUser(creq CallRequest, user *User) error

type AppOption

type AppOption func(app *App) error

func TestWithBindingsHandler added in v1.2.0

func TestWithBindingsHandler(h HandlerFunc) AppOption

func WithBindingsExpand added in v1.2.0

func WithBindingsExpand(e *apps.Expand) AppOption

func WithBindingsPath added in v1.2.0

func WithBindingsPath(path string) AppOption

func WithChannelHeader

func WithChannelHeader(items ...Bindable) AppOption

func WithCommand

func WithCommand(subcommands ...Bindable) AppOption

func WithLog

func WithLog(log utils.Logger) AppOption

func WithPostMenu

func WithPostMenu(items ...Bindable) AppOption

func WithStatic

func WithStatic(staticFS fs.FS) AppOption

type Bindable

type Bindable interface {
	Binding(CallRequest) *apps.Binding
}

type BindableAction

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

func MakeBindableAction

func MakeBindableAction(name string, submitHandler HandlerFunc, opts ...BindableOption) (*BindableAction, error)

func MakeBindableActionOrPanic

func MakeBindableActionOrPanic(name string, submitHandler HandlerFunc, opts ...BindableOption) *BindableAction

func (BindableAction) Binding

func (b BindableAction) Binding(creq CallRequest) *apps.Binding

func (BindableAction) Init

func (b BindableAction) Init(app *App) error

func (BindableAction) RequireConnectedUser

func (b BindableAction) RequireConnectedUser() bool

func (BindableAction) RequireSystemAdmin

func (b BindableAction) RequireSystemAdmin() bool

func (BindableAction) String

func (b BindableAction) String() string

type BindableForm

type BindableForm struct {
	*BindableAction
	// contains filtered or unexported fields
}

BindableForm is a bindable action, with a form attached to it. It allows binding submittable forms to commands for the autocomplete of parameters and flags, and to the channel header and post actions menu where they open as modal dialogs.

func MakeBindableForm

func MakeBindableForm(name string, form apps.Form, submitHandler HandlerFunc, opts ...BindableOption) (*BindableForm, error)

func MakeBindableFormOrPanic

func MakeBindableFormOrPanic(name string, form apps.Form, submitHandler HandlerFunc, opts ...BindableOption) *BindableForm

func (BindableForm) Binding

func (b BindableForm) Binding(creq CallRequest) *apps.Binding

func (BindableForm) RequireConnectedUser

func (b BindableForm) RequireConnectedUser() bool

func (BindableForm) RequireSystemAdmin

func (b BindableForm) RequireSystemAdmin() bool

func (BindableForm) String

func (b BindableForm) String() string

type BindableMulti

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

func MakeBindableMulti

func MakeBindableMulti(name string, opts ...BindableOption) (*BindableMulti, error)

func MakeBindableMultiOrPanic

func MakeBindableMultiOrPanic(name string, opts ...BindableOption) *BindableMulti

func (BindableMulti) Binding

func (b BindableMulti) Binding(creq CallRequest) *apps.Binding

func (BindableMulti) Init

func (b BindableMulti) Init(app *App) error

func (BindableMulti) RequireConnectedUser

func (b BindableMulti) RequireConnectedUser() bool

func (BindableMulti) RequireSystemAdmin

func (b BindableMulti) RequireSystemAdmin() bool

func (BindableMulti) String

func (b BindableMulti) String() string

type BindableOption

type BindableOption func(Bindable) error

func WithChildren

func WithChildren(children ...Bindable) BindableOption

func WithDescription

func WithDescription(description string) BindableOption

func WithExpand

func WithExpand(expand apps.Expand) BindableOption

func WithHint

func WithHint(hint string) BindableOption

func WithIcon

func WithIcon(icon string) BindableOption

func WithState

func WithState(state interface{}) BindableOption

func WithSubmit

func WithSubmit(submit *apps.Call) BindableOption

type CallRequest

type CallRequest struct {
	apps.CallRequest

	App       *App            `json:"-"`
	GoContext context.Context `json:"-"`

	Log utils.Logger `json:"-"`
	// contains filtered or unexported fields
}

func (*CallRequest) ActingUserID

func (creq *CallRequest) ActingUserID() string

func (CallRequest) AppProxyURL

func (creq CallRequest) AppProxyURL(paths ...string) string

func (CallRequest) AsActingUser

func (creq CallRequest) AsActingUser() *appclient.Client

func (CallRequest) AsBot

func (creq CallRequest) AsBot() *appclient.Client

func (CallRequest) BoolValue

func (creq CallRequest) BoolValue(name string) (value, found bool)

func (CallRequest) GetValue

func (creq CallRequest) GetValue(name, defaultValue string) string

GetValue scans Values, then State if it is a map for a name, returns the value, or the default if not found.

func (CallRequest) IsConnectedUser

func (creq CallRequest) IsConnectedUser() bool

func (CallRequest) IsSystemAdmin

func (creq CallRequest) IsSystemAdmin() bool

func (CallRequest) OAuth2User

func (creq CallRequest) OAuth2User() *User

func (CallRequest) StringValue

func (creq CallRequest) StringValue(name string) (string, bool)

type HandlerFunc

type HandlerFunc func(CallRequest) apps.CallResponse

func RequireAdmin

func RequireAdmin(h HandlerFunc) HandlerFunc

func RequireConnectedUser

func RequireConnectedUser(h HandlerFunc) HandlerFunc

type Initializer

type Initializer interface {
	Init(app *App) error
}

type Requirer

type Requirer interface {
	RequireSystemAdmin() bool
	RequireConnectedUser() bool
}

type User

type User struct {
	MattermostID string
	RemoteID     string
	Token        *oauth2.Token
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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