kopia lustrzana https://github.com/reiver/greatape
38 wiersze
929 B
Go
38 wiersze
929 B
Go
package messaging
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
. "github.com/xeronith/diamante/contracts/logging"
|
|
)
|
|
|
|
type IMessagingHandler func(receiver string, template string, model map[string]interface{}) error
|
|
|
|
type IMessagingProvider interface {
|
|
Send(receiver string, template string, model map[string]interface{}) error
|
|
}
|
|
|
|
type provider struct {
|
|
name string
|
|
logger ILogger
|
|
handler IMessagingHandler
|
|
}
|
|
|
|
func NewProvider(name string, logger ILogger, handler IMessagingHandler) IMessagingProvider {
|
|
return &provider{
|
|
name: name,
|
|
logger: logger,
|
|
handler: handler,
|
|
}
|
|
}
|
|
|
|
func (provider *provider) Send(receiver, message string, model map[string]interface{}) error {
|
|
if err := provider.handler(receiver, message, model); err != nil {
|
|
provider.logger.Error(fmt.Sprintf("%s: %s", provider.name, err.Error()))
|
|
return err
|
|
} else {
|
|
provider.logger.Debug(fmt.Sprintf("%s: %s %s", provider.name, receiver, message))
|
|
return nil
|
|
}
|
|
}
|