factory

package
v0.0.0-...-c7901e9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2026 License: MIT Imports: 12 Imported by: 0

README

factory

import "github.com/altessa-s/go-atlas/security/tlsutils/factory"

Package factory provides a fluent builder for creating TLS provider registries from configuration. ProvidersBuilder uses deferred error accumulation — errors from any step are collected and returned at Build() time.

Quick Start

providers, err := factory.New(cfg.TLS).
    UseLogger(logger).
    UseVaultClient(vaultClient).
    UseCacheDir("/var/cache/tls").
    Build()

When config is nil, Build returns an empty *tlsproviders.Providers with no error.

Supported Providers

Provider Config field Requires
File TlsProvider.File Certificate and key file paths
Vault PKI TlsProvider.Vault UseVaultClient
Let's Encrypt TlsProvider.LetsEncrypt Domain and email

Methods

Constructor
Method Description
New(cfg) Creates a ProvidersBuilder for the given TLS provider config
Dependencies
Method Description
UseLogger Sets the logger for the builder and all created components
UseOcspStapler Sets the OCSP stapler attached to file and Vault providers
UseVaultClient Sets the Vault client required for the Vault TLS provider
UseCacheDir Sets the cache directory for Vault and Let's Encrypt certificate caching
Terminal
Method Description
Build() Assembles and returns the *tlsproviders.Providers registry

Documentation

Overview

Package factory provides a fluent builder for creating TLS configurations and providers from configuration.

ProvidersBuilder uses a fluent API with deferred error accumulation: errors from any step are collected and returned at ProvidersBuilder.Build time.

providers, err := factory.New(cfg.TlsProvider).
    UseLogger(logger).
    UseVaultClient(vaultClient).
    UseCacheDir("./certs").
    Build()
if err != nil {
    log.Fatal(err)
}
defer providers.Close(ctx, nil)

For client TLS configurations, use ProvidersBuilder.CreateClientConfig:

b := factory.New(nil).UseLogger(logger)
tlsConfig, err := b.CreateClientConfig(cfg.TlsClient)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ProvidersBuilder

type ProvidersBuilder struct {
	corefactory.Base
	// contains filtered or unexported fields
}

ProvidersBuilder assembles a tlsproviders.Providers registry step by step using a fluent API. Create instances with New. Errors are accumulated and reported at ProvidersBuilder.Build time. The builder is not safe for concurrent use.

func New

New creates a ProvidersBuilder for the given TLS provider config. Config can be nil — Build returns an empty tlsproviders.Providers in that case.

func (*ProvidersBuilder) Build

Build assembles the TLS providers registry. Errors from fluent methods are accumulated and reported here via errors.Join.

func (*ProvidersBuilder) CreateClientConfig

func (b *ProvidersBuilder) CreateClientConfig(cfg *config.TlsClient) (*tls.Config, error)

CreateClientConfig creates a TLS configuration for client connections from config. Returns nil, nil if the configuration is nil. This is a standalone utility that does not depend on the builder's TLS provider config.

func (*ProvidersBuilder) UseCacheDir

func (b *ProvidersBuilder) UseCacheDir(v string) *ProvidersBuilder

UseCacheDir sets the cache directory for TLS certificate caching.

func (*ProvidersBuilder) UseDefaultLogger

func (b *ProvidersBuilder) UseDefaultLogger() *ProvidersBuilder

UseDefaultLogger sets the logger to slog.Default.

func (*ProvidersBuilder) UseLogger

func (b *ProvidersBuilder) UseLogger(v *slog.Logger) *ProvidersBuilder

UseLogger sets the logger for the builder and all created components.

func (*ProvidersBuilder) UseOcspStapler

func (b *ProvidersBuilder) UseOcspStapler(v tlsutils.OCSPStapler) *ProvidersBuilder

UseOcspStapler sets the OCSP stapler for TLS providers.

func (*ProvidersBuilder) UseVaultClient

func (b *ProvidersBuilder) UseVaultClient(v *vaultApi.Client) *ProvidersBuilder

UseVaultClient sets the Vault client for the Vault TLS provider.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL