...
1
15
16 package auth
17
18 import (
19 "context"
20 "net/http"
21 )
22
23 type (
24
25 LoginOption func(*LoginSettings)
26
27
28 LoginSettings struct {
29 Context context.Context
30 Hostname string
31 Username string
32 Secret string
33 CertFile string
34 KeyFile string
35 CAFile string
36 Insecure bool
37 UserAgent string
38 }
39 )
40
41
42 func WithLoginContext(context context.Context) LoginOption {
43 return func(settings *LoginSettings) {
44 settings.Context = context
45 }
46 }
47
48
49 func WithLoginHostname(hostname string) LoginOption {
50 return func(settings *LoginSettings) {
51 settings.Hostname = hostname
52 }
53 }
54
55
56 func WithLoginUsername(username string) LoginOption {
57 return func(settings *LoginSettings) {
58 settings.Username = username
59 }
60 }
61
62
63 func WithLoginSecret(secret string) LoginOption {
64 return func(settings *LoginSettings) {
65 settings.Secret = secret
66 }
67 }
68
69
70 func WithLoginInsecure() LoginOption {
71 return func(settings *LoginSettings) {
72 settings.Insecure = true
73 }
74 }
75
76
77 func WithLoginTLS(certFile, keyFile, caFile string) LoginOption {
78 return func(settings *LoginSettings) {
79 settings.CertFile = certFile
80 settings.KeyFile = keyFile
81 settings.CAFile = caFile
82 }
83 }
84
85
86 func WithLoginUserAgent(userAgent string) LoginOption {
87 return func(settings *LoginSettings) {
88 settings.UserAgent = userAgent
89 }
90 }
91
92 type (
93
94 ResolverOption func(*ResolverSettings)
95
96
97 ResolverSettings struct {
98 Client *http.Client
99 PlainHTTP bool
100 Headers http.Header
101 }
102 )
103
104
105 func WithResolverClient(client *http.Client) ResolverOption {
106 return func(settings *ResolverSettings) {
107 settings.Client = client
108 }
109 }
110
111
112 func WithResolverPlainHTTP() ResolverOption {
113 return func(settings *ResolverSettings) {
114 settings.PlainHTTP = true
115 }
116 }
117
118
119 func WithResolverHeaders(headers http.Header) ResolverOption {
120 return func(settings *ResolverSettings) {
121 settings.Headers = headers
122 }
123 }
124
View as plain text