package receiver

import "github.com/spf13/viper"

type StaticReceiver struct {
	StaticType string `mapstructure:"type"`
	StaticId   string `mapstructure:"id"`
}

// impl Receiver
func (sr *StaticReceiver) Type() string {
	return sr.StaticType
}

// impl Receiver
func (sr *StaticReceiver) Id() string {
	return sr.StaticId
}

type StaticReceiverSelector struct {
	staticReceivers map[string]StaticReceiver
}

func NewStaticReceiverSelector() (*StaticReceiverSelector, error) {
	var staticReceivers map[string]StaticReceiver
	err := viper.UnmarshalKey("receivers", &staticReceivers)
	if err != nil {
		return nil, err
	}
	return &StaticReceiverSelector{staticReceivers: staticReceivers}, nil
}

// impl ReceiverSelector
func (rs *StaticReceiverSelector) SelectReceiver(name string, data interface{}) ([]Receiver, error) {
	receivers := make([]Receiver, 0)
	if receiver, ok := rs.staticReceivers[name]; ok {
		receivers = append(receivers, &receiver)
	}
	return receivers, nil
}
