This file is indexed.

/usr/share/gocode/src/github.com/mesos/mesos-go/auth/login.go is in golang-github-mesos-mesos-go-dev 0.0.2+dfsg-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
package auth

import (
	"errors"
	"fmt"

	"github.com/mesos/mesos-go/auth/callback"
	"github.com/mesos/mesos-go/upid"
	"golang.org/x/net/context"
)

var (
	// No login provider name has been specified in a context.Context
	NoLoginProviderName = errors.New("missing login provider name in context")
)

// Main client entrypoint into the authentication APIs: clients are expected to
// invoke this func with a context containing a login provider name value.
// This may be written as:
//     providerName := ...  // the user has probably configured this via some flag
//     handler := ...  // handlers provide data like usernames and passwords
//     ctx := ...  // obtain some initial or timed context
//     err := auth.Login(auth.WithLoginProvider(ctx, providerName), handler)
func Login(ctx context.Context, handler callback.Handler) error {
	name, ok := LoginProviderFrom(ctx)
	if !ok {
		return NoLoginProviderName
	}
	provider, ok := getAuthenticateeProvider(name)
	if !ok {
		return fmt.Errorf("unrecognized login provider name in context: %s", name)
	}
	return provider.Authenticate(ctx, handler)
}

// Unexported key type, avoids conflicts with other context-using packages. All
// context items registered from this package should use keys of this type.
type loginKeyType int

const (
	loginProviderNameKey loginKeyType = iota // name of login provider to use
	parentUpidKey                            // upid.UPID of some parent process
)

// Return a context that inherits all values from the parent ctx and specifies
// the login provider name given here. Intended to be invoked before calls to
// Login().
func WithLoginProvider(ctx context.Context, providerName string) context.Context {
	return context.WithValue(ctx, loginProviderNameKey, providerName)
}

// Return the name of the login provider specified in this context.
func LoginProviderFrom(ctx context.Context) (name string, ok bool) {
	name, ok = ctx.Value(loginProviderNameKey).(string)
	return
}

// Return the name of the login provider specified in this context, or empty
// string if none.
func LoginProvider(ctx context.Context) string {
	name, _ := LoginProviderFrom(ctx)
	return name
}

func WithParentUPID(ctx context.Context, pid upid.UPID) context.Context {
	return context.WithValue(ctx, parentUpidKey, pid)
}

func ParentUPIDFrom(ctx context.Context) (pid upid.UPID, ok bool) {
	pid, ok = ctx.Value(parentUpidKey).(upid.UPID)
	return
}

func ParentUPID(ctx context.Context) (upid *upid.UPID) {
	if upid, ok := ParentUPIDFrom(ctx); ok {
		return &upid
	} else {
		return nil
	}
}