Explicit assignment of struct fields

This commit is contained in:
Christoph Polcin 2023-06-07 17:23:35 +02:00 committed by Christoph Polcin
parent ad27fc07a7
commit d59c1705b2
5 changed files with 16 additions and 16 deletions

14
auth.go
View File

@ -108,10 +108,10 @@ type noAuth struct{}
// First In, First Out. // First In, First Out.
func NewAutoAuth(login string, secret string) Authorizer { func NewAutoAuth(login string, secret string) Authorizer {
fmap := make([]authfactory, 0) fmap := make([]authfactory, 0)
az := &authorizer{fmap, sync.Mutex{}, &nullAuth{}} az := &authorizer{factories: fmap, defAuthMux: sync.Mutex{}, defAuth: &nullAuth{}}
az.AddAuthenticator("basic", func(c *http.Client, rs *http.Response, path string) (auth Authenticator, err error) { az.AddAuthenticator("basic", func(c *http.Client, rs *http.Response, path string) (auth Authenticator, err error) {
return &BasicAuth{login, secret}, nil return &BasicAuth{user: login, pw: secret}, nil
}) })
az.AddAuthenticator("digest", func(c *http.Client, rs *http.Response, path string) (auth Authenticator, err error) { az.AddAuthenticator("digest", func(c *http.Client, rs *http.Response, path string) (auth Authenticator, err error) {
@ -127,7 +127,7 @@ func NewAutoAuth(login string, secret string) Authorizer {
// It offers the `NewAutoAuth` features. // It offers the `NewAutoAuth` features.
func NewEmptyAuth() Authorizer { func NewEmptyAuth() Authorizer {
fmap := make([]authfactory, 0) fmap := make([]authfactory, 0)
az := &authorizer{fmap, sync.Mutex{}, &nullAuth{}} az := &authorizer{factories: fmap, defAuthMux: sync.Mutex{}, defAuth: &nullAuth{}}
return az return az
} }
@ -142,7 +142,7 @@ func NewEmptyAuth() Authorizer {
// without any synchronisation!! // without any synchronisation!!
// Still applicable with `BasicAuth` within go routines. // Still applicable with `BasicAuth` within go routines.
func NewPreemptiveAuth(auth Authenticator) Authorizer { func NewPreemptiveAuth(auth Authenticator) Authorizer {
return &preemptiveAuthorizer{auth} return &preemptiveAuthorizer{auth: auth}
} }
// NewAuthenticator creates an Authenticator (Shim) per request // NewAuthenticator creates an Authenticator (Shim) per request
@ -167,7 +167,7 @@ func (a *authorizer) NewAuthenticator(body io.Reader) (Authenticator, io.Reader)
defAuth := a.defAuth.Clone() defAuth := a.defAuth.Clone()
a.defAuthMux.Unlock() a.defAuthMux.Unlock()
return &authShim{a.factory, retryBuf, defAuth}, body return &authShim{factory: a.factory, body: retryBuf, auth: defAuth}, body
} }
// AddAuthenticator appends the AuthFactory to our factories. // AddAuthenticator appends the AuthFactory to our factories.
@ -206,7 +206,7 @@ func (a *authorizer) factory(c *http.Client, rs *http.Response, path string) (au
case 1: case 1:
auth = auths[0] auth = auths[0]
default: default:
auth = &negoAuth{auths, a.setDefaultAuthenticator} auth = &negoAuth{auths: auths, setDefaultAuthenticator: a.setDefaultAuthenticator}
} }
} else { } else {
auth = &noAuth{} auth = &noAuth{}
@ -324,7 +324,7 @@ func (n *negoAuth) Clone() Authenticator {
for i, e := range n.auths { for i, e := range n.auths {
auths[i] = e.Clone() auths[i] = e.Clone()
} }
return &negoAuth{auths, n.setDefaultAuthenticator} return &negoAuth{auths: auths, setDefaultAuthenticator: n.setDefaultAuthenticator}
} }
func (n *negoAuth) String() string { func (n *negoAuth) String() string {

View File

@ -6,7 +6,7 @@ import (
) )
func TestNewBasicAuth(t *testing.T) { func TestNewBasicAuth(t *testing.T) {
a := &BasicAuth{"user", "password"} a := &BasicAuth{user: "user", pw: "password"}
ex := "BasicAuth login: user" ex := "BasicAuth login: user"
if a.String() != ex { if a.String() != ex {
@ -23,7 +23,7 @@ func TestNewBasicAuth(t *testing.T) {
} }
func TestBasicAuthAuthorize(t *testing.T) { func TestBasicAuthAuthorize(t *testing.T) {
a := &BasicAuth{"user", "password"} a := &BasicAuth{user: "user", pw: "password"}
rq, _ := http.NewRequest("GET", "http://localhost/", nil) rq, _ := http.NewRequest("GET", "http://localhost/", nil)
a.Authorize(nil, rq, "/") a.Authorize(nil, rq, "/")
if rq.Header.Get("Authorization") != "Basic dXNlcjpwYXNzd29yZA==" { if rq.Header.Get("Authorization") != "Basic dXNlcjpwYXNzd29yZA==" {
@ -32,7 +32,7 @@ func TestBasicAuthAuthorize(t *testing.T) {
} }
func TestPreemtiveBasicAuth(t *testing.T) { func TestPreemtiveBasicAuth(t *testing.T) {
a := &BasicAuth{"user", "password"} a := &BasicAuth{user: "user", pw: "password"}
auth := NewPreemptiveAuth(a) auth := NewPreemptiveAuth(a)
n, b := auth.NewAuthenticator(nil) n, b := auth.NewAuthenticator(nil)
if b != nil { if b != nil {

View File

@ -42,7 +42,7 @@ func NewAuthClient(uri string, auth Authorizer) *Client {
return nil return nil
}, },
} }
return &Client{FixSlash(uri), make(http.Header), nil, c, auth} return &Client{root: FixSlash(uri), headers: make(http.Header), interceptor: nil, c: c, auth: auth}
} }
// SetHeader lets us set arbitrary headers for a given client // SetHeader lets us set arbitrary headers for a given client
@ -378,7 +378,7 @@ func (c *Client) ReadStreamRange(path string, offset, length int64) (io.ReadClos
} }
// return a io.ReadCloser that is limited to `length` bytes. // return a io.ReadCloser that is limited to `length` bytes.
return &limitedReadCloser{rs.Body, int(length)}, nil return &limitedReadCloser{rc: rs.Body, remaining: int(length)}, nil
} }
rs.Body.Close() rs.Body.Close()

View File

@ -19,7 +19,7 @@ type DigestAuth struct {
// NewDigestAuth creates a new instance of our Digest Authenticator // NewDigestAuth creates a new instance of our Digest Authenticator
func NewDigestAuth(login, secret string, rs *http.Response) (Authenticator, error) { func NewDigestAuth(login, secret string, rs *http.Response) (Authenticator, error) {
return &DigestAuth{login, secret, digestParts(rs)}, nil return &DigestAuth{user: login, pw: secret, digestParts: digestParts(rs)}, nil
} }
// Authorize the current request // Authorize the current request
@ -51,7 +51,7 @@ func (d *DigestAuth) Clone() Authenticator {
for k, v := range d.digestParts { for k, v := range d.digestParts {
parts[k] = v parts[k] = v
} }
return &DigestAuth{d.user, d.pw, parts} return &DigestAuth{user: d.user, pw: d.pw, digestParts: parts}
} }
// String toString // String toString

View File

@ -7,7 +7,7 @@ import (
) )
func TestNewDigestAuth(t *testing.T) { func TestNewDigestAuth(t *testing.T) {
a := &DigestAuth{"user", "password", make(map[string]string, 0)} a := &DigestAuth{user: "user", pw: "password", digestParts: make(map[string]string, 0)}
ex := "DigestAuth login: user" ex := "DigestAuth login: user"
if a.String() != ex { if a.String() != ex {
@ -24,7 +24,7 @@ func TestNewDigestAuth(t *testing.T) {
} }
func TestDigestAuthAuthorize(t *testing.T) { func TestDigestAuthAuthorize(t *testing.T) {
a := &DigestAuth{"user", "password", make(map[string]string, 0)} a := &DigestAuth{user: "user", pw: "password", digestParts: make(map[string]string, 0)}
rq, _ := http.NewRequest("GET", "http://localhost/", nil) rq, _ := http.NewRequest("GET", "http://localhost/", nil)
a.Authorize(nil, rq, "/") a.Authorize(nil, rq, "/")
// TODO this is a very lazy test it cuts of cnonce // TODO this is a very lazy test it cuts of cnonce