-
Notifications
You must be signed in to change notification settings - Fork 2
/
util.go
62 lines (52 loc) · 1.55 KB
/
util.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
package pulsar
import (
"github.com/golang/protobuf/proto"
log "github.com/sirupsen/logrus"
pulsar_proto "github.com/t2y/go-pulsar/proto/pb"
)
func NewCommandConnect(
c *Config, useCache bool,
) (connect *pulsar_proto.CommandConnect, err error) {
connect = &pulsar_proto.CommandConnect{
ClientVersion: proto.String(ClientName),
AuthMethod: pulsar_proto.AuthMethod_AuthMethodNone.Enum(),
ProtocolVersion: proto.Int32(DefaultProtocolVersion),
}
if c.AuthMethod != "" {
var auth Authentication
auth, err = NewAuthentication(c.AuthMethod, c)
if err != nil {
log.WithFields(log.Fields{
"config": c,
"err": err,
}).Fatal("Failed to initialize authentication")
}
authMethodName := auth.GetAuthMethodName()
connect.AuthMethod = pulsar_proto.AuthMethod(
pulsar_proto.AuthMethod_value[authMethodName],
).Enum()
connect.AuthMethodName = proto.String(authMethodName)
if useCache && c.AuthenticationDataProvider != nil {
authData := c.AuthenticationDataProvider.GetCommandData()
connect.AuthData = []byte(authData)
log.Debug("use cached auth data")
return
}
auth.Configure(c.AuthParams)
err = auth.Start()
if err != nil {
log.WithFields(log.Fields{
"err": err,
}).Fatal("Failed to start authentication")
}
c.AuthenticationDataProvider, err = auth.GetAuthData()
if err != nil {
log.WithFields(log.Fields{
"err": err,
}).Fatal("Failed to get authentication data provider")
}
authData := c.AuthenticationDataProvider.GetCommandData()
connect.AuthData = []byte(authData)
}
return
}