mirror of
https://github.com/certimate-go/certimate.git
synced 2026-07-20 21:01:41 +08:00
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package certmgmt
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/certimate-go/certimate/internal/certmgmt/deployers"
|
|
"github.com/certimate-go/certimate/internal/domain"
|
|
)
|
|
|
|
type DeployCertificateRequest struct {
|
|
// 提供商相关
|
|
Provider domain.DeploymentProviderType
|
|
ProviderAccessConfig map[string]any
|
|
ProviderExtendedConfig map[string]any
|
|
|
|
// 证书相关
|
|
CertificatePEM string
|
|
PrivateKeyPEM string
|
|
}
|
|
|
|
type DeployCertificateResponse struct{}
|
|
|
|
func (c *Client) DeployCertificate(ctx context.Context, request *DeployCertificateRequest) (*DeployCertificateResponse, error) {
|
|
if request == nil {
|
|
return nil, fmt.Errorf("the request is nil")
|
|
}
|
|
|
|
providerFactory, err := deployers.Registries.Get(request.Provider)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
provider, err := providerFactory(&deployers.ProviderFactoryOptions{
|
|
ProviderAccessConfig: request.ProviderAccessConfig,
|
|
ProviderExtendedConfig: request.ProviderExtendedConfig,
|
|
})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to initialize deployment provider '%s': %w", request.Provider, err)
|
|
}
|
|
|
|
provider.SetLogger(c.logger)
|
|
if _, err := provider.Deploy(ctx, request.CertificatePEM, request.PrivateKeyPEM); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &DeployCertificateResponse{}, nil
|
|
}
|