-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservice_provider.go
57 lines (49 loc) · 1.5 KB
/
service_provider.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package email
import (
"crypto/tls"
"fmt"
"github.com/goal-web/contracts"
"github.com/goal-web/supports/utils"
"net/smtp"
)
type ServiceProvider struct {
app contracts.Application
}
func (service *ServiceProvider) Register(application contracts.Application) {
service.app = application
application.Singleton("mail.factory", func(config contracts.Config, queue contracts.Queue) contracts.EmailFactory {
return &Factory{
config: config.Get("mail").(Config),
mailers: map[string]contracts.Mailer{},
drivers: map[string]contracts.MailerDriver{
"mailer": func(name string, config contracts.Fields) contracts.Mailer {
tlsConfig, _ := config["tls"].(*tls.Config)
return &Mailer{
name: name,
tlsConfig: tlsConfig,
from: utils.GetStringField(config, "from"),
auth: smtp.PlainAuth(
utils.GetStringField(config, "identity"),
utils.GetStringField(config, "username"),
utils.GetStringField(config, "password"),
utils.GetStringField(config, "host"),
),
address: fmt.Sprintf("%s:%s", utils.GetStringField(config, "host"), utils.GetStringField(config, "port")),
queue: queue,
}
},
},
}
})
application.Singleton("mailer", func(factory contracts.EmailFactory) contracts.Mailer {
return factory.Mailer()
})
}
func (service *ServiceProvider) Start() error {
service.app.Call(func(serializer contracts.ClassSerializer) {
serializer.Register(JobClass)
})
return nil
}
func (service *ServiceProvider) Stop() {
}