package http import "github.com/gorilla/sessions" type Options struct { Address string BaseURL string SessionStore sessions.Store } type OptionFunc func(opts *Options) func NewOptions(funcs ...OptionFunc) *Options { opts := &Options{ Address: ":3000", BaseURL: "", SessionStore: sessions.NewCookieStore(), } for _, fn := range funcs { fn(opts) } return opts } func WithBaseURL(baseURL string) OptionFunc { return func(opts *Options) { opts.BaseURL = baseURL } } func WithAddress(addr string) OptionFunc { return func(opts *Options) { opts.Address = addr } } func WithSessionStore(store sessions.Store) OptionFunc { return func(opts *Options) { opts.SessionStore = store } }