smug

package
v0.8.24 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2020 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CONTENT_DISPLAY = iota
	CONTENT_META    = iota
)
View Source
const Prefix = ".."

Variables

This section is empty.

Functions

func ChunkSplit

func ChunkSplit(body string, limit int) []string

func SetupLogging

func SetupLogging(loglevel string)

Types

type Broker

type Broker interface {
	Name() string
	HandleEvent(*Event, Dispatcher)
	Setup(...string) // at the end of this func, the broker should be able to
	// Handle(event) as needed, whether that is a queue until
	// Activate() is called by dispatcher.AddBroker
	Activate(Dispatcher) // this will setup a runloop if needed for the broker
	Deactivate()         // must not return anything, will be called during destruction
}

type BrokerConfig

type BrokerConfig struct {
	Type     string          `yaml:"type"`
	Server   string          `yaml:"server" envcfg:"SERVER"`
	ApiToken string          `yaml:"token" envcfg:"APITOKEN"`
	UseSSL   bool            `yaml:"ssl" envcfg:"SSL"`
	Nick     string          `yaml:"nick" envcfg:"NICK"`
	Channel  string          `yaml:"channel" envcfg:"CHANNEL"`
	Patterns []PatternConfig `yaml:"patterns"`
}

NOTE this is a super set of broker config needs. not all brokers will use every member of this Config however, doing it this way allows the yaml unmarshal to Just Work(TM)

type CentralDispatch

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

func NewCentralDispatch

func NewCentralDispatch() *CentralDispatch

func (*CentralDispatch) AddBroker

func (cd *CentralDispatch) AddBroker(b Broker)

func (*CentralDispatch) Broadcast

func (cd *CentralDispatch) Broadcast(ev *Event)

func (*CentralDispatch) NumBrokers

func (cd *CentralDispatch) NumBrokers() int

func (*CentralDispatch) RemoveBroker

func (cd *CentralDispatch) RemoveBroker(b Broker) error

type Command

type Command interface {
	// contains filtered or unexported methods
}

type Config

type Config struct {
	ActiveBrokers []string                 `yaml:"active-brokers"`
	Brokers       map[string]*BrokerConfig `yaml:"brokers"`
}

func LoadConfig

func LoadConfig(configFile string) *Config

type ContentType

type ContentType int

func (ContentType) String

func (c ContentType) String() string

type Dispatcher

type Dispatcher interface {
	Broadcast(*Event)
	AddBroker(Broker)
	RemoveBroker(Broker) error
	NumBrokers() int
}

type Event

type Event struct {
	IsCmdOutput bool
	Origin      Broker
	ReplyBroker Broker // all brokers will see message but may choose to ignore
	// unless beneficial (bot handlers, etc)
	ReplyTarget string // replyBroker will use this to target a specific user
	// either privately or some other mechanism. this should
	// not be changed once set by the originating event as it
	// may specific to a given broker's format
	Actor         string
	Avatar        string
	Text          string
	RawText       string
	ContentBlocks []*EventBlock
	// contains filtered or unexported fields
}

type EventBlock

type EventBlock struct {
	// some event displays could use a bit more layout control
	Title  string
	Text   string
	ImgUrl string
	Type   ContentType
}

type HelperPattern

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

func (*HelperPattern) Handle

func (hp *HelperPattern) Handle(ev *Event, feedback chan *Event) bool

func (*HelperPattern) HelpText

func (hp *HelperPattern) HelpText() string

type IrcBroker

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

func (*IrcBroker) Activate

func (ib *IrcBroker) Activate(dis Dispatcher)

func (*IrcBroker) Deactivate

func (ib *IrcBroker) Deactivate()

func (*IrcBroker) HandleEvent

func (ib *IrcBroker) HandleEvent(ev *Event, dis Dispatcher)

func (*IrcBroker) MsgTarget

func (ib *IrcBroker) MsgTarget(target string, msg string, prefix string)

func (*IrcBroker) Name

func (ib *IrcBroker) Name() string

func (*IrcBroker) Setup

func (ib *IrcBroker) Setup(args ...string)

args [server, channel, nick, botname]

type JsonBlock

type JsonBlock struct {
	Text  string `json:text`
	Img   string `json:img`
	Title string `json:title`
}

type JsonResponse

type JsonResponse struct {
	Text   string      `json:text`
	Blocks []JsonBlock `json:blocks`
}

type LocalCmdBroker

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

func (*LocalCmdBroker) Activate

func (lcb *LocalCmdBroker) Activate(dis Dispatcher)

func (*LocalCmdBroker) Deactivate

func (lcb *LocalCmdBroker) Deactivate()

func (*LocalCmdBroker) HandleEvent

func (lcb *LocalCmdBroker) HandleEvent(ev *Event, dis Dispatcher)

func (*LocalCmdBroker) Name

func (lcb *LocalCmdBroker) Name() string

func (*LocalCmdBroker) NewEvent

func (lcb *LocalCmdBroker) NewEvent(oldEvent *Event) *Event

func (*LocalCmdBroker) Setup

func (lcb *LocalCmdBroker) Setup(args ...string)

args [botnick, botavatar, version string]

type Logger

type Logger struct {
	log.Entry
}

func NewLogger

func NewLogger(context string) *Logger

type MetaPattern

type MetaPattern interface {
	Handle(*Event, chan *Event) bool
	HelpText() string
}

type NamedGroups

type NamedGroups map[string]string

for our group matches

type Pattern

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

func NewExtendedPattern

func NewExtendedPattern(
	name string,
	reg string,
	url string,
	headers map[string]string,
	vars map[string]string,
	method string,
	help string,
) (*Pattern, error)

func NewPattern

func NewPattern(reg string, url string) (*Pattern, error)

func (*Pattern) ExtractMatches

func (p *Pattern) ExtractMatches(text string) ([]string, NamedGroups)

func (*Pattern) Handle

func (p *Pattern) Handle(ev *Event, feedback chan *Event) bool

func (*Pattern) HelpText

func (p *Pattern) HelpText() string

func (*Pattern) Submit

func (p *Pattern) Submit(
	originEvt *Event,
	actor string,
	text string,
	named NamedGroups,
	feedback chan *Event,
)

type PatternConfig

type PatternConfig struct {
	Name    string            `yaml:"name"`
	Help    string            `yaml:"help"`
	RegEx   string            `yaml:"regex"`
	Url     string            `yaml:"url"`
	Method  string            `yaml:"method"`
	Headers map[string]string `yaml:"headers"`
	Vars    map[string]string `yaml:"vars"`
}

type PatternRoutingBroker

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

func (*PatternRoutingBroker) Activate

func (prb *PatternRoutingBroker) Activate(dis Dispatcher)

func (*PatternRoutingBroker) AddPattern

func (prb *PatternRoutingBroker) AddPattern(newp MetaPattern)

func (*PatternRoutingBroker) Deactivate

func (prb *PatternRoutingBroker) Deactivate()

func (*PatternRoutingBroker) HandleEvent

func (prb *PatternRoutingBroker) HandleEvent(ev *Event, dis Dispatcher)

func (*PatternRoutingBroker) HelpText

func (prb *PatternRoutingBroker) HelpText() string

func (*PatternRoutingBroker) Name

func (prb *PatternRoutingBroker) Name() string

func (*PatternRoutingBroker) Setup

func (prb *PatternRoutingBroker) Setup(args ...string)

args [regex,apiurl,method,headers]

type SlackBroker

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

func (*SlackBroker) Activate

func (sb *SlackBroker) Activate(dis Dispatcher)

func (*SlackBroker) ConvertRefsToUsers

func (sb *SlackBroker) ConvertRefsToUsers(s string, cacheOnly bool) string

func (*SlackBroker) ConvertUsersToRefs

func (sb *SlackBroker) ConvertUsersToRefs(s string, cacheOnly bool) string

func (*SlackBroker) Deactivate

func (sb *SlackBroker) Deactivate()

func (*SlackBroker) HandleEvent

func (sb *SlackBroker) HandleEvent(ev *Event, dis Dispatcher)

func (*SlackBroker) Name

func (sb *SlackBroker) Name() string

func (*SlackBroker) ParseToEvent

func (sb *SlackBroker) ParseToEvent(e *libsl.MessageEvent) *Event

func (*SlackBroker) SendComplexMsg

func (sb *SlackBroker) SendComplexMsg(dest string, text string, ev *Event)

func (*SlackBroker) Setup

func (sb *SlackBroker) Setup(args ...string)

args [token, channel]

func (*SlackBroker) SetupInternals

func (sb *SlackBroker) SetupInternals()

allows us to setup internal members without hitting the api let's us do certain tests that don't require api

func (*SlackBroker) SimplifyParse

func (sb *SlackBroker) SimplifyParse(s string) string

accept a slack string and simplify it - replace html entities (&lt; should be <) - remove urls in favor of url descr where available

type SlackLogger

type SlackLogger struct {
	*Logger
}

func (*SlackLogger) Output

func (sl *SlackLogger) Output(lvl int, msg string) error

type SlackUser

type SlackUser struct {
	Id     string
	Nick   string
	Avatar string
}

type SlackUserCache

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

func (*SlackUserCache) CacheUser

func (suc *SlackUserCache) CacheUser(user *SlackUser)

func (*SlackUserCache) PopulateCache

func (suc *SlackUserCache) PopulateCache(sb *SlackBroker, mems []string)

func (*SlackUserCache) Setup

func (suc *SlackUserCache) Setup()

func (*SlackUserCache) UserFromAPI

func (suc *SlackUserCache) UserFromAPI(
	sb *SlackBroker, ukey string) (*SlackUser, error)

func (*SlackUserCache) UserId

func (suc *SlackUserCache) UserId(
	sb *SlackBroker, nick string, cacheOnly bool) string

func (*SlackUserCache) UserNick

func (suc *SlackUserCache) UserNick(
	sb *SlackBroker, ukey string, cacheOnly bool) string

type VersionCommand

type VersionCommand struct {
	Version string
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

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