package nats

import (
	"time"

	"github.com/nats-io/nats.go"
	"go.uber.org/zap"
)

func WithClientCert(certPath, keyPath string) Option {
	return func(o *opts) {
		o.nOpts = append(o.nOpts, nats.ClientCert(certPath, keyPath))
	}
}

func WithRootCA(paths ...string) Option {
	return func(o *opts) {
		o.nOpts = append(o.nOpts, nats.RootCAs(paths...))
	}
}

func WithTimeout(timeout time.Duration) Option {
	return func(o *opts) {
		o.nOpts = append(o.nOpts, nats.Timeout(timeout))
	}
}

func WithConnectionName(name string) Option {
	return func(o *opts) {
		o.nOpts = append(o.nOpts, nats.Name(name))
	}
}

func WithLogger(logger *zap.Logger) Option {
	return func(o *opts) {
		o.log = logger
	}
}