From 4f512a6cdd7c7f1571776d5e42dfeeb8736452f4 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 22 Apr 2025 21:51:36 +0800 Subject: [PATCH] refactor: clean code --- .../huaweicloud-cdn/huaweicloud_cdn.go | 16 +++++------ .../huaweicloud-elb/huaweicloud_elb.go | 12 ++++---- .../huaweicloud-waf/huaweicloud_waf.go | 26 ++++++++--------- .../providers/wangsu-cdnpro/wangsu_cdnpro.go | 28 +++++++++---------- .../huaweicloud-elb/huaweicloud_elb.go | 12 ++++---- .../huaweicloud-scm/huaweicloud_scm.go | 10 +++---- .../huaweicloud-waf/huaweicloud_waf.go | 6 ++-- internal/pkg/sdk3rd/huaweicloud/cast.go | 9 ------ .../pkg/utils/type/{type.go => assert.go} | 26 ----------------- internal/pkg/utils/type/cast.go | 27 ++++++++++++++++++ 10 files changed, 82 insertions(+), 90 deletions(-) delete mode 100644 internal/pkg/sdk3rd/huaweicloud/cast.go rename internal/pkg/utils/type/{type.go => assert.go} (56%) create mode 100644 internal/pkg/utils/type/cast.go diff --git a/internal/pkg/core/deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go b/internal/pkg/core/deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go index ce07f9ee..94df8cf9 100644 --- a/internal/pkg/core/deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go +++ b/internal/pkg/core/deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go @@ -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)) } } diff --git a/internal/pkg/core/deployer/providers/huaweicloud-elb/huaweicloud_elb.go b/internal/pkg/core/deployer/providers/huaweicloud-elb/huaweicloud_elb.go index 6cdb63d1..8a1f068c 100644 --- a/internal/pkg/core/deployer/providers/huaweicloud-elb/huaweicloud_elb.go +++ b/internal/pkg/core/deployer/providers/huaweicloud-elb/huaweicloud_elb.go @@ -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) diff --git a/internal/pkg/core/deployer/providers/huaweicloud-waf/huaweicloud_waf.go b/internal/pkg/core/deployer/providers/huaweicloud-waf/huaweicloud_waf.go index 1d1d3164..92fffa8d 100644 --- a/internal/pkg/core/deployer/providers/huaweicloud-waf/huaweicloud_waf.go +++ b/internal/pkg/core/deployer/providers/huaweicloud-waf/huaweicloud_waf.go @@ -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) diff --git a/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go b/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go index 582c76a0..ae80180c 100644 --- a/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go +++ b/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go @@ -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)) diff --git a/internal/pkg/core/uploader/providers/huaweicloud-elb/huaweicloud_elb.go b/internal/pkg/core/uploader/providers/huaweicloud-elb/huaweicloud_elb.go index 217b1d4c..59474b6d 100644 --- a/internal/pkg/core/uploader/providers/huaweicloud-elb/huaweicloud_elb.go +++ b/internal/pkg/core/uploader/providers/huaweicloud-elb/huaweicloud_elb.go @@ -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), }, }, } diff --git a/internal/pkg/core/uploader/providers/huaweicloud-scm/huaweicloud_scm.go b/internal/pkg/core/uploader/providers/huaweicloud-scm/huaweicloud_scm.go index d2f72a3b..e49f7dd5 100644 --- a/internal/pkg/core/uploader/providers/huaweicloud-scm/huaweicloud_scm.go +++ b/internal/pkg/core/uploader/providers/huaweicloud-scm/huaweicloud_scm.go @@ -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)) diff --git a/internal/pkg/core/uploader/providers/huaweicloud-waf/huaweicloud_waf.go b/internal/pkg/core/uploader/providers/huaweicloud-waf/huaweicloud_waf.go index 3bd1fb31..4998a072 100644 --- a/internal/pkg/core/uploader/providers/huaweicloud-waf/huaweicloud_waf.go +++ b/internal/pkg/core/uploader/providers/huaweicloud-waf/huaweicloud_waf.go @@ -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)) diff --git a/internal/pkg/sdk3rd/huaweicloud/cast.go b/internal/pkg/sdk3rd/huaweicloud/cast.go deleted file mode 100644 index e02a2753..00000000 --- a/internal/pkg/sdk3rd/huaweicloud/cast.go +++ /dev/null @@ -1,9 +0,0 @@ -package huaweicloudsdk - -func Int32Ptr(i int32) *int32 { - return &i -} - -func StringPtr(s string) *string { - return &s -} diff --git a/internal/pkg/utils/type/type.go b/internal/pkg/utils/type/assert.go similarity index 56% rename from internal/pkg/utils/type/type.go rename to internal/pkg/utils/type/assert.go index 7262eec2..509a77cc 100644 --- a/internal/pkg/utils/type/type.go +++ b/internal/pkg/utils/type/assert.go @@ -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 -} diff --git a/internal/pkg/utils/type/cast.go b/internal/pkg/utils/type/cast.go new file mode 100644 index 00000000..684e262e --- /dev/null +++ b/internal/pkg/utils/type/cast.go @@ -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 +}