forked from knox-networks/knox-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathknox.go
98 lines (81 loc) · 2.33 KB
/
knox.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package knox
import (
"github.com/knox-networks/knox-go/credential"
"github.com/knox-networks/knox-go/identity"
"github.com/knox-networks/knox-go/presentation"
"github.com/knox-networks/knox-go/signer"
"github.com/knox-networks/knox-go/token"
)
type KnoxClient struct {
s signer.DynamicSigner
Identity identity.IdentityClient
Credential credential.CredentialClient
Presentation presentation.PresentationClient
Token token.TokenClient
}
type NetworkConfig struct {
CredentialAdapterURL string
AuthServiceURL string
RegistryURL string
}
type KnoxConfig struct {
Signer signer.DynamicSigner
Network *NetworkConfig
}
func NewKnoxClient(c *KnoxConfig) (*KnoxClient, error) {
client := &KnoxClient{}
client.s = c.Signer
if c.Network != nil {
credClient, err := credential.NewCredentialClient(c.Network.CredentialAdapterURL, c.Signer)
if err != nil {
return &KnoxClient{}, err
}
presClient, err := presentation.NewPresentationClient(c.Network.CredentialAdapterURL, c.Signer)
if err != nil {
return &KnoxClient{}, err
}
identityClient, err := identity.NewIdentityClient(c.Network.AuthServiceURL, c.Network.RegistryURL, c.Signer)
if err != nil {
return &KnoxClient{}, err
}
tokenClient, err := token.NewTokenClient(c.Network.AuthServiceURL, c.Signer)
if err != nil {
return &KnoxClient{}, err
}
client.Credential = credClient
client.Presentation = presClient
client.Identity = identityClient
client.Token = tokenClient
}
return client, nil
}
func (k *KnoxClient) UpdateConfig(c *KnoxConfig) error {
if c.Signer != nil {
k.s = c.Signer
}
if c.Network.CredentialAdapterURL != "" {
credClient, err := credential.NewCredentialClient(c.Network.CredentialAdapterURL, c.Signer)
if err != nil {
return err
}
presClient, err := presentation.NewPresentationClient(c.Network.CredentialAdapterURL, c.Signer)
if err != nil {
return err
}
k.Credential = credClient
k.Presentation = presClient
}
if c.Network.AuthServiceURL != "" {
identityClient, err := identity.NewIdentityClient(c.Network.AuthServiceURL, c.Network.RegistryURL, c.Signer)
if err != nil {
return err
}
tokenClient, err := token.NewTokenClient(c.Network.AuthServiceURL, c.Signer)
if err != nil {
return err
}
k.Identity = identityClient
k.Token = tokenClient
}
return nil
}