MCPcopy
hub / github.com/nats-io/nats.go / connectProto

Method connectProto

nats.go:2916–2994  ·  view source on GitHub ↗

Generate a connect protocol message, issuing user/password if applicable. The lock is assumed to be held upon entering.

()

Source from the content-addressed store, hash-verified

2914// Generate a connect protocol message, issuing user/password if
2915// applicable. The lock is assumed to be held upon entering.
2916func (nc *Conn) connectProto() (string, error) {
2917 o := nc.Opts
2918 var nkey, sig, user, pass, token, ujwt string
2919 u := nc.current.URL.User
2920 if u != nil {
2921 // if no password, assume username is authToken
2922 if _, ok := u.Password(); !ok {
2923 token = u.Username()
2924 } else {
2925 user = u.Username()
2926 pass, _ = u.Password()
2927 }
2928 } else {
2929 // Take from options (possibly all empty strings)
2930 user = o.User
2931 pass = o.Password
2932 token = o.Token
2933 nkey = o.Nkey
2934
2935 if nc.Opts.UserInfo != nil {
2936 if user != _EMPTY_ || pass != _EMPTY_ {
2937 return _EMPTY_, ErrUserInfoAlreadySet
2938 }
2939 user, pass = nc.Opts.UserInfo()
2940 }
2941 }
2942
2943 // Look for user jwt.
2944 if o.UserJWT != nil {
2945 if jwt, err := o.UserJWT(); err != nil {
2946 return _EMPTY_, err
2947 } else {
2948 ujwt = jwt
2949 }
2950 if nkey != _EMPTY_ {
2951 return _EMPTY_, ErrNkeyAndUser
2952 }
2953 }
2954
2955 if ujwt != _EMPTY_ || nkey != _EMPTY_ {
2956 if o.SignatureCB == nil {
2957 if ujwt == _EMPTY_ {
2958 return _EMPTY_, ErrNkeyButNoSigCB
2959 }
2960 return _EMPTY_, ErrUserButNoSigCB
2961 }
2962 sigraw, err := o.SignatureCB([]byte(nc.info.Nonce))
2963 if err != nil {
2964 return _EMPTY_, fmt.Errorf("error signing nonce: %w", err)
2965 }
2966 sig = base64.RawURLEncoding.EncodeToString(sigraw)
2967 }
2968
2969 if nc.Opts.TokenHandler != nil {
2970 if token != _EMPTY_ {
2971 return _EMPTY_, ErrTokenAlreadySet
2972 }
2973 token = nc.Opts.TokenHandler()

Callers 2

TestNoEchoOldServerFunction · 0.95
sendConnectMethod · 0.95

Calls 1

ErrorfMethod · 0.80

Tested by 1

TestNoEchoOldServerFunction · 0.76