package base // getOpts - iterate the inbound Options and return a struct. func getOpts(opt ...Option) Options { opts := getDefaultOptions() for _, o := range opt { o(&opts) } return opts } // Option - how Options are passed as arguments. type Option func(*Options) // Options - how Options are represented. type Options struct { withNoTokenScope bool } func getDefaultOptions() Options { return Options{} } // WithNoTokenScope tells the client not to set a scope for the client from a // saved token's scope, as this can cause confusing behavior at authentication // time. func WithNoTokenScope() Option { return func(o *Options) { o.withNoTokenScope = true } }