chore: move '/internal/pkg' to '/pkg'

This commit is contained in:
Fu Diwei
2025-06-17 15:54:21 +08:00
parent 30840bbba5
commit 205275b52d
611 changed files with 693 additions and 693 deletions

View File

@@ -0,0 +1,88 @@
package gcorecdn
import (
"context"
"errors"
"fmt"
"log/slog"
"time"
"github.com/G-Core/gcorelabscdn-go/gcore/provider"
"github.com/G-Core/gcorelabscdn-go/sslcerts"
"github.com/usual2970/certimate/pkg/core"
gcoresdk "github.com/usual2970/certimate/pkg/sdk3rd/gcore"
)
type SSLManagerProviderConfig struct {
// Gcore API Token。
ApiToken string `json:"apiToken"`
}
type SSLManagerProvider struct {
config *SSLManagerProviderConfig
logger *slog.Logger
sdkClient *sslcerts.Service
}
var _ core.SSLManager = (*SSLManagerProvider)(nil)
func NewSSLManagerProvider(config *SSLManagerProviderConfig) (*SSLManagerProvider, error) {
if config == nil {
return nil, errors.New("the configuration of the ssl manager provider is nil")
}
client, err := createSDKClient(config.ApiToken)
if err != nil {
return nil, fmt.Errorf("could not create sdk client: %w", err)
}
return &SSLManagerProvider{
config: config,
logger: slog.Default(),
sdkClient: client,
}, nil
}
func (m *SSLManagerProvider) SetLogger(logger *slog.Logger) {
if logger == nil {
m.logger = slog.New(slog.DiscardHandler)
} else {
m.logger = logger
}
}
func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*core.SSLManageUploadResult, error) {
// 新增证书
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/operation/add_ssl_certificates
createCertificateReq := &sslcerts.CreateRequest{
Name: fmt.Sprintf("certimate_%d", time.Now().UnixMilli()),
Cert: certPEM,
PrivateKey: privkeyPEM,
Automated: false,
ValidateRootCA: false,
}
createCertificateResp, err := m.sdkClient.Create(context.TODO(), createCertificateReq)
m.logger.Debug("sdk request 'sslcerts.Create'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Create': %w", err)
}
return &core.SSLManageUploadResult{
CertId: fmt.Sprintf("%d", createCertificateResp.ID),
CertName: createCertificateResp.Name,
}, nil
}
func createSDKClient(apiToken string) (*sslcerts.Service, error) {
if apiToken == "" {
return nil, errors.New("invalid gcore api token")
}
requester := provider.NewClient(
gcoresdk.BASE_URL,
provider.WithSigner(gcoresdk.NewAuthRequestSigner(apiToken)),
)
service := sslcerts.NewService(requester)
return service, nil
}