-
Notifications
You must be signed in to change notification settings - Fork 1
/
service.go
76 lines (59 loc) · 1.51 KB
/
service.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package keypair
import (
"net/url"
"github.com/giantswarm/microerror"
"github.com/giantswarm/micrologger"
resty "gopkg.in/resty.v1"
"github.com/giantswarm/clusterclient/service/keypair/creator"
"github.com/giantswarm/clusterclient/service/keypair/lister"
)
// Config represents the configuration used to create a new service.
type Config struct {
Logger micrologger.Logger
RestClient *resty.Client
URL *url.URL
}
// DefaultConfig provides a default configuration to create a new service by
// best effort.
func DefaultConfig() Config {
return Config{
Logger: nil,
RestClient: nil,
URL: nil,
}
}
// New creates a new configured service object.
func New(config Config) (*Service, error) {
var err error
var creatorService *creator.Service
{
creatorConfig := creator.DefaultConfig()
creatorConfig.Logger = config.Logger
creatorConfig.RestClient = config.RestClient
creatorConfig.URL = config.URL
creatorService, err = creator.New(creatorConfig)
if err != nil {
return nil, microerror.Mask(err)
}
}
var listerService *lister.Service
{
listerConfig := lister.DefaultConfig()
listerConfig.Logger = config.Logger
listerConfig.RestClient = config.RestClient
listerConfig.URL = config.URL
listerService, err = lister.New(listerConfig)
if err != nil {
return nil, microerror.Mask(err)
}
}
newService := &Service{
Creator: creatorService,
Lister: listerService,
}
return newService, nil
}
type Service struct {
Creator *creator.Service
Lister *lister.Service
}