Newer
Older
EnvoyControlPlane / internal / pkg / cert / factory.go
@Yangyang Xie Yangyang Xie 11 days ago 867 bytes refactor code
package cert

import (
	"fmt"

	"envoy-control-plane/internal/pkg/cert/api"
	"envoy-control-plane/internal/pkg/cert/letsencrypt"
)

// NewCertIssuer is a factory function that creates a CertIssuer based on the provided type name.
// It allows the rest of the application to obtain an issuer without knowing the specific
// underlying implementation details.
func NewCertIssuer(issuerType string) (api.CertIssuer, error) {
	switch issuerType {
	case "letsencrypt":
		// Return the concrete *letsencrypt.LetsEncryptIssuer, which satisfies the cert.CertIssuer interface.
		return &letsencrypt.LetsEncryptIssuer{}, nil

	// Add new certificate authority implementations here as new cases
	// case "zerossl":
	//     return &zerossl.ZeroSSLIssuer{}, nil

	default:
		return nil, fmt.Errorf("unknown certificate issuer type: %s. Valid types: letsencrypt", issuerType)
	}
}