refactor: clean code

This commit is contained in:
Fu Diwei 2025-04-22 21:51:36 +08:00
parent 94f162c189
commit 4f512a6cdd
10 changed files with 82 additions and 90 deletions

View File

@ -13,7 +13,7 @@ import (
"github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/huaweicloud-scm"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type DeployerConfig struct {
@ -102,9 +102,9 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
updateDomainMultiCertificatesReqBodyContent := &hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent{}
updateDomainMultiCertificatesReqBodyContent.DomainName = d.config.Domain
updateDomainMultiCertificatesReqBodyContent.HttpsSwitch = 1
updateDomainMultiCertificatesReqBodyContent.CertificateType = hwsdk.Int32Ptr(2)
updateDomainMultiCertificatesReqBodyContent.ScmCertificateId = hwsdk.StringPtr(upres.CertId)
updateDomainMultiCertificatesReqBodyContent.CertName = hwsdk.StringPtr(upres.CertName)
updateDomainMultiCertificatesReqBodyContent.CertificateType = typeutil.ToPtr(int32(2))
updateDomainMultiCertificatesReqBodyContent.ScmCertificateId = typeutil.ToPtr(upres.CertId)
updateDomainMultiCertificatesReqBodyContent.CertName = typeutil.ToPtr(upres.CertName)
updateDomainMultiCertificatesReqBodyContent = assign(updateDomainMultiCertificatesReqBodyContent, showDomainFullConfigResp.Configs)
updateDomainMultiCertificatesReq := &hccdnmodel.UpdateDomainMultiCertificatesRequest{
Body: &hccdnmodel.UpdateDomainMultiCertificatesRequestBody{
@ -159,11 +159,11 @@ func assign(source *hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent,
}
if *target.OriginProtocol == "follow" {
source.AccessOriginWay = hwsdk.Int32Ptr(1)
source.AccessOriginWay = typeutil.ToPtr(int32(1))
} else if *target.OriginProtocol == "http" {
source.AccessOriginWay = hwsdk.Int32Ptr(2)
source.AccessOriginWay = typeutil.ToPtr(int32(2))
} else if *target.OriginProtocol == "https" {
source.AccessOriginWay = hwsdk.Int32Ptr(3)
source.AccessOriginWay = typeutil.ToPtr(int32(3))
}
if target.ForceRedirect != nil {
@ -181,7 +181,7 @@ func assign(source *hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent,
if target.Https != nil {
if *target.Https.Http2Status == "on" {
source.Http2 = hwsdk.Int32Ptr(1)
source.Http2 = typeutil.ToPtr(int32(1))
}
}

View File

@ -20,7 +20,7 @@ import (
"github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/huaweicloud-elb"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type DeployerConfig struct {
@ -125,8 +125,8 @@ func (d *DeployerProvider) deployToCertificate(ctx context.Context, certPEM stri
CertificateId: d.config.CertificateId,
Body: &hcelbmodel.UpdateCertificateRequestBody{
Certificate: &hcelbmodel.UpdateCertificateOption{
Certificate: hwsdk.StringPtr(certPEM),
PrivateKey: hwsdk.StringPtr(privkeyPEM),
Certificate: typeutil.ToPtr(certPEM),
PrivateKey: typeutil.ToPtr(privkeyPEM),
},
},
}
@ -162,7 +162,7 @@ func (d *DeployerProvider) deployToLoadbalancer(ctx context.Context, certPEM str
var listListenersMarker *string = nil
for {
listListenersReq := &hcelbmodel.ListListenersRequest{
Limit: hwsdk.Int32Ptr(listListenersLimit),
Limit: typeutil.ToPtr(listListenersLimit),
Marker: listListenersMarker,
Protocol: &[]string{"HTTPS", "TERMINATED_HTTPS"},
LoadbalancerId: &[]string{showLoadBalancerResp.Loadbalancer.Id},
@ -254,7 +254,7 @@ func (d *DeployerProvider) modifyListenerCertificate(ctx context.Context, cloudL
ListenerId: cloudListenerId,
Body: &hcelbmodel.UpdateListenerRequestBody{
Listener: &hcelbmodel.UpdateListenerOption{
DefaultTlsContainerRef: hwsdk.StringPtr(cloudCertId),
DefaultTlsContainerRef: typeutil.ToPtr(cloudCertId),
},
},
}
@ -303,7 +303,7 @@ func (d *DeployerProvider) modifyListenerCertificate(ctx context.Context, cloudL
}
if showListenerResp.Listener.SniMatchAlgo != "" {
updateListenerReq.Body.Listener.SniMatchAlgo = hwsdk.StringPtr(showListenerResp.Listener.SniMatchAlgo)
updateListenerReq.Body.Listener.SniMatchAlgo = typeutil.ToPtr(showListenerResp.Listener.SniMatchAlgo)
}
}
updateListenerResp, err := d.sdkClient.UpdateListener(updateListenerReq)

View File

@ -20,7 +20,7 @@ import (
"github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/huaweicloud-waf"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type DeployerConfig struct {
@ -141,8 +141,8 @@ func (d *DeployerProvider) deployToCertificate(ctx context.Context, certPEM stri
CertificateId: d.config.CertificateId,
Body: &hcwafmodel.UpdateCertificateRequestBody{
Name: *showCertificateResp.Name,
Content: hwsdk.StringPtr(certPEM),
Key: hwsdk.StringPtr(privkeyPEM),
Content: typeutil.ToPtr(certPEM),
Key: typeutil.ToPtr(privkeyPEM),
},
}
updateCertificateResp, err := d.sdkClient.UpdateCertificate(updateCertificateReq)
@ -174,9 +174,9 @@ func (d *DeployerProvider) deployToCloudServer(ctx context.Context, certPEM stri
listHostPageSize := int32(100)
for {
listHostReq := &hcwafmodel.ListHostRequest{
Hostname: hwsdk.StringPtr(strings.TrimPrefix(d.config.Domain, "*")),
Page: hwsdk.Int32Ptr(listHostPage),
Pagesize: hwsdk.Int32Ptr(listHostPageSize),
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
Page: typeutil.ToPtr(listHostPage),
Pagesize: typeutil.ToPtr(listHostPageSize),
}
listHostResp, err := d.sdkClient.ListHost(listHostReq)
d.logger.Debug("sdk request 'waf.ListHost'", slog.Any("request", listHostReq), slog.Any("response", listHostResp))
@ -208,8 +208,8 @@ func (d *DeployerProvider) deployToCloudServer(ctx context.Context, certPEM stri
updateHostReq := &hcwafmodel.UpdateHostRequest{
InstanceId: hostId,
Body: &hcwafmodel.UpdateHostRequestBody{
Certificateid: hwsdk.StringPtr(upres.CertId),
Certificatename: hwsdk.StringPtr(upres.CertName),
Certificateid: typeutil.ToPtr(upres.CertId),
Certificatename: typeutil.ToPtr(upres.CertName),
},
}
updateHostResp, err := d.sdkClient.UpdateHost(updateHostReq)
@ -241,9 +241,9 @@ func (d *DeployerProvider) deployToPremiumHost(ctx context.Context, certPEM stri
listPremiumHostPageSize := int32(100)
for {
listPremiumHostReq := &hcwafmodel.ListPremiumHostRequest{
Hostname: hwsdk.StringPtr(strings.TrimPrefix(d.config.Domain, "*")),
Page: hwsdk.StringPtr(fmt.Sprintf("%d", listPremiumHostPage)),
Pagesize: hwsdk.StringPtr(fmt.Sprintf("%d", listPremiumHostPageSize)),
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
Page: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPage)),
Pagesize: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPageSize)),
}
listPremiumHostResp, err := d.sdkClient.ListPremiumHost(listPremiumHostReq)
d.logger.Debug("sdk request 'waf.ListPremiumHost'", slog.Any("request", listPremiumHostReq), slog.Any("response", listPremiumHostResp))
@ -275,8 +275,8 @@ func (d *DeployerProvider) deployToPremiumHost(ctx context.Context, certPEM stri
updatePremiumHostReq := &hcwafmodel.UpdatePremiumHostRequest{
HostId: hostId,
Body: &hcwafmodel.UpdatePremiumHostRequestBody{
Certificateid: hwsdk.StringPtr(upres.CertId),
Certificatename: hwsdk.StringPtr(upres.CertName),
Certificateid: typeutil.ToPtr(upres.CertId),
Certificatename: typeutil.ToPtr(upres.CertName),
},
}
updatePremiumHostResp, err := d.sdkClient.UpdatePremiumHost(updatePremiumHostReq)

View File

@ -16,12 +16,12 @@ import (
"strconv"
"time"
"github.com/alibabacloud-go/tea/tea"
xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/deployer"
wangsucdn "github.com/usual2970/certimate/internal/pkg/sdk3rd/wangsu/cdn"
certutil "github.com/usual2970/certimate/internal/pkg/utils/cert"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type DeployerConfig struct {
@ -101,10 +101,10 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
return nil, xerrors.Wrap(err, "failed to encrypt private key")
}
certificateNewVersionInfo := &wangsucdn.CertificateVersion{
PrivateKey: tea.String(encryptedPrivateKey),
Certificate: tea.String(certPEM),
PrivateKey: typeutil.ToPtr(encryptedPrivateKey),
Certificate: typeutil.ToPtr(certPEM),
IdentificationInfo: &wangsucdn.CertificateVersionIdentificationInfo{
CommonName: tea.String(certX509.Subject.CommonName),
CommonName: typeutil.ToPtr(certX509.Subject.CommonName),
SubjectAlternativeNames: &certX509.DNSNames,
},
}
@ -123,8 +123,8 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
// 创建证书
createCertificateReq := &wangsucdn.CreateCertificateRequest{
Timestamp: timestamp,
Name: tea.String(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
AutoRenew: tea.String("Off"),
Name: typeutil.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
AutoRenew: typeutil.ToPtr("Off"),
NewVersion: certificateNewVersionInfo,
}
createCertificateResp, err := d.sdkClient.CreateCertificate(createCertificateReq)
@ -146,8 +146,8 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
// 更新证书
updateCertificateReq := &wangsucdn.UpdateCertificateRequest{
Timestamp: timestamp,
Name: tea.String(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
AutoRenew: tea.String("Off"),
Name: typeutil.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
AutoRenew: typeutil.ToPtr("Off"),
NewVersion: certificateNewVersionInfo,
}
updateCertificateResp, err := d.sdkClient.UpdateCertificate(d.config.CertificateId, updateCertificateReq)
@ -174,18 +174,18 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
// 创建部署任务
// REF: https://www.wangsu.com/document/api-doc/27034
createDeploymentTaskReq := &wangsucdn.CreateDeploymentTaskRequest{
Name: tea.String(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
Target: tea.String(d.config.Environment),
Name: typeutil.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())),
Target: typeutil.ToPtr(d.config.Environment),
Actions: &[]wangsucdn.DeploymentTaskAction{
{
Action: tea.String("deploy_cert"),
CertificateId: tea.String(wangsuCertId),
Version: tea.Int32(wangsuCertVer),
Action: typeutil.ToPtr("deploy_cert"),
CertificateId: typeutil.ToPtr(wangsuCertId),
Version: typeutil.ToPtr(wangsuCertVer),
},
},
}
if d.config.WebhookId != "" {
createDeploymentTaskReq.Webhook = tea.String(d.config.WebhookId)
createDeploymentTaskReq.Webhook = typeutil.ToPtr(d.config.WebhookId)
}
createDeploymentTaskResp, err := d.sdkClient.CreateDeploymentTask(createDeploymentTaskReq)
d.logger.Debug("sdk request 'cdn.CreateCertificate'", slog.Any("request", createDeploymentTaskReq), slog.Any("response", createDeploymentTaskResp))

View File

@ -18,8 +18,8 @@ import (
xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
certutil "github.com/usual2970/certimate/internal/pkg/utils/cert"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type UploaderConfig struct {
@ -78,7 +78,7 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPEM string, privkeyPE
var listCertificatesMarker *string = nil
for {
listCertificatesReq := &hcelbmodel.ListCertificatesRequest{
Limit: hwsdk.Int32Ptr(listCertificatesLimit),
Limit: typeutil.ToPtr(listCertificatesLimit),
Marker: listCertificatesMarker,
Type: &[]string{"server"},
}
@ -136,10 +136,10 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPEM string, privkeyPE
createCertificateReq := &hcelbmodel.CreateCertificateRequest{
Body: &hcelbmodel.CreateCertificateRequestBody{
Certificate: &hcelbmodel.CreateCertificateOption{
ProjectId: hwsdk.StringPtr(projectId),
Name: hwsdk.StringPtr(certName),
Certificate: hwsdk.StringPtr(certPEM),
PrivateKey: hwsdk.StringPtr(privkeyPEM),
ProjectId: typeutil.ToPtr(projectId),
Name: typeutil.ToPtr(certName),
Certificate: typeutil.ToPtr(certPEM),
PrivateKey: typeutil.ToPtr(privkeyPEM),
},
},
}

View File

@ -13,8 +13,8 @@ import (
xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
certutil "github.com/usual2970/certimate/internal/pkg/utils/cert"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type UploaderConfig struct {
@ -74,10 +74,10 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPEM string, privkeyPE
listCertificatesOffset := int32(0)
for {
listCertificatesReq := &hcscmmodel.ListCertificatesRequest{
Limit: hwsdk.Int32Ptr(listCertificatesLimit),
Offset: hwsdk.Int32Ptr(listCertificatesOffset),
SortDir: hwsdk.StringPtr("DESC"),
SortKey: hwsdk.StringPtr("certExpiredTime"),
Limit: typeutil.ToPtr(listCertificatesLimit),
Offset: typeutil.ToPtr(listCertificatesOffset),
SortDir: typeutil.ToPtr("DESC"),
SortKey: typeutil.ToPtr("certExpiredTime"),
}
listCertificatesResp, err := u.sdkClient.ListCertificates(listCertificatesReq)
u.logger.Debug("sdk request 'scm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))

View File

@ -18,8 +18,8 @@ import (
xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader"
hwsdk "github.com/usual2970/certimate/internal/pkg/sdk3rd/huaweicloud"
certutil "github.com/usual2970/certimate/internal/pkg/utils/cert"
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
)
type UploaderConfig struct {
@ -79,8 +79,8 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPEM string, privkeyPE
listCertificatesPageSize := int32(100)
for {
listCertificatesReq := &hcwafmodel.ListCertificatesRequest{
Page: hwsdk.Int32Ptr(listCertificatesPage),
Pagesize: hwsdk.Int32Ptr(listCertificatesPageSize),
Page: typeutil.ToPtr(listCertificatesPage),
Pagesize: typeutil.ToPtr(listCertificatesPageSize),
}
listCertificatesResp, err := u.sdkClient.ListCertificates(listCertificatesReq)
u.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))

View File

@ -1,9 +0,0 @@
package huaweicloudsdk
func Int32Ptr(i int32) *int32 {
return &i
}
func StringPtr(s string) *string {
return &s
}

View File

@ -24,29 +24,3 @@ func IsNil(obj any) bool {
return false
}
// 将对象转换为指针。
//
// 入参:
// - 待转换的对象。
//
// 出参:
// - 返回对象的指针。
func ToPtr[T any](v T) (p *T) {
return &v
}
// 将指针转换为对象。
//
// 入参:
// - 待转换的指针。
//
// 出参:
// - 返回指针指向的对象。如果指针为空,则返回对象的零值。
func ToObj[T any](p *T) (v T) {
if p == nil {
return v
}
return *p
}

View File

@ -0,0 +1,27 @@
package typeutil
// 将对象转换为指针。
//
// 入参:
// - 待转换的对象。
//
// 出参:
// - 返回对象的指针。
func ToPtr[T any](v T) (p *T) {
return &v
}
// 将指针转换为对象。
//
// 入参:
// - 待转换的指针。
//
// 出参:
// - 返回指针指向的对象。如果指针为空,则返回对象的零值。
func ToVal[T any](p *T) (v T) {
if IsNil(p) {
return v
}
return *p
}