56 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package input is an interface for bot inputs
 | 
						|
package input
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/micro/cli/v2"
 | 
						|
)
 | 
						|
 | 
						|
type EventType string
 | 
						|
 | 
						|
const (
 | 
						|
	TextEvent EventType = "text"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// Inputs keyed by name
 | 
						|
	// Example slack or hipchat
 | 
						|
	Inputs = map[string]Input{}
 | 
						|
)
 | 
						|
 | 
						|
// Event is the unit sent and received
 | 
						|
type Event struct {
 | 
						|
	Type EventType
 | 
						|
	From string
 | 
						|
	To   string
 | 
						|
	Data []byte
 | 
						|
	Meta map[string]interface{}
 | 
						|
}
 | 
						|
 | 
						|
// Input is an interface for sources which
 | 
						|
// provide a way to communicate with the bot.
 | 
						|
// Slack, HipChat, XMPP, etc.
 | 
						|
type Input interface {
 | 
						|
	// Provide cli flags
 | 
						|
	Flags() []cli.Flag
 | 
						|
	// Initialise input using cli context
 | 
						|
	Init(*cli.Context) error
 | 
						|
	// Stream events from the input
 | 
						|
	Stream() (Conn, error)
 | 
						|
	// Start the input
 | 
						|
	Start() error
 | 
						|
	// Stop the input
 | 
						|
	Stop() error
 | 
						|
	// name of the input
 | 
						|
	String() string
 | 
						|
}
 | 
						|
 | 
						|
// Conn interface provides a way to
 | 
						|
// send and receive events. Send and
 | 
						|
// Recv both block until succeeding
 | 
						|
// or failing.
 | 
						|
type Conn interface {
 | 
						|
	Close() error
 | 
						|
	Recv(*Event) error
 | 
						|
	Send(*Event) error
 | 
						|
}
 |