48 lines
945 B
Go
48 lines
945 B
Go
|
package provider
|
||
|
|
||
|
// Option returns a function which sets an option
|
||
|
type Option func(*Options)
|
||
|
|
||
|
// Options a provider can have
|
||
|
type Options struct {
|
||
|
// ClientID is the application's ID.
|
||
|
ClientID string
|
||
|
// ClientSecret is the application's secret.
|
||
|
ClientSecret string
|
||
|
// Endpoint for the provider
|
||
|
Endpoint string
|
||
|
// Redirect url incase of UI
|
||
|
Redirect string
|
||
|
// Scope of the oauth request
|
||
|
Scope string
|
||
|
}
|
||
|
|
||
|
// Credentials is an option which sets the client id and secret
|
||
|
func Credentials(id, secret string) Option {
|
||
|
return func(o *Options) {
|
||
|
o.ClientID = id
|
||
|
o.ClientSecret = secret
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Endpoint sets the endpoint option
|
||
|
func Endpoint(e string) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Endpoint = e
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Redirect sets the Redirect option
|
||
|
func Redirect(r string) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Redirect = r
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Scope sets the oauth scope
|
||
|
func Scope(s string) Option {
|
||
|
return func(o *Options) {
|
||
|
o.Scope = s
|
||
|
}
|
||
|
}
|