refactor: lightweight volcengine vendor packages

This commit is contained in:
Fu Diwei 2025-11-12 13:19:55 +08:00
parent 37221fb33d
commit e075d66f54
12 changed files with 682 additions and 18 deletions

View File

@ -0,0 +1,144 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/alb"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/alb/service_alb.go
// to lightweight the vendor packages in the built binary.
type AlbClient struct {
*client.Client
}
func NewAlbClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *AlbClient {
c := p.ClientConfig(alb.EndpointsID, cfgs...)
return newAlbClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newAlbClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *AlbClient {
svc := &AlbClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: alb.ServiceName,
ServiceID: alb.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2020-04-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *AlbClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *AlbClient) DescribeListenerAttributes(input *alb.DescribeListenerAttributesInput) (*alb.DescribeListenerAttributesOutput, error) {
req, out := c.DescribeListenerAttributesRequest(input)
return out, req.Send()
}
func (c *AlbClient) DescribeListenerAttributesRequest(input *alb.DescribeListenerAttributesInput) (req *request.Request, output *alb.DescribeListenerAttributesOutput) {
op := &request.Operation{
Name: "DescribeListenerAttributes",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &alb.DescribeListenerAttributesInput{}
}
output = &alb.DescribeListenerAttributesOutput{}
req = c.newRequest(op, input, output)
return
}
func (c *AlbClient) DescribeListeners(input *alb.DescribeListenersInput) (*alb.DescribeListenersOutput, error) {
req, out := c.DescribeListenersRequest(input)
return out, req.Send()
}
func (c *AlbClient) DescribeListenersRequest(input *alb.DescribeListenersInput) (req *request.Request, output *alb.DescribeListenersOutput) {
op := &request.Operation{
Name: "DescribeListeners",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &alb.DescribeListenersInput{}
}
output = &alb.DescribeListenersOutput{}
req = c.newRequest(op, input, output)
return
}
func (c *AlbClient) DescribeLoadBalancerAttributes(input *alb.DescribeLoadBalancerAttributesInput) (*alb.DescribeLoadBalancerAttributesOutput, error) {
req, out := c.DescribeLoadBalancerAttributesRequest(input)
return out, req.Send()
}
func (c *AlbClient) DescribeLoadBalancerAttributesRequest(input *alb.DescribeLoadBalancerAttributesInput) (req *request.Request, output *alb.DescribeLoadBalancerAttributesOutput) {
op := &request.Operation{
Name: "DescribeLoadBalancerAttributes",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &alb.DescribeLoadBalancerAttributesInput{}
}
output = &alb.DescribeLoadBalancerAttributesOutput{}
req = c.newRequest(op, input, output)
return
}
func (c *AlbClient) ModifyListenerAttributes(input *alb.ModifyListenerAttributesInput) (*alb.ModifyListenerAttributesOutput, error) {
req, out := c.ModifyListenerAttributesRequest(input)
return out, req.Send()
}
func (c *AlbClient) ModifyListenerAttributesRequest(input *alb.ModifyListenerAttributesInput) (req *request.Request, output *alb.ModifyListenerAttributesOutput) {
op := &request.Operation{
Name: "ModifyListenerAttributes",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &alb.ModifyListenerAttributesInput{}
}
output = &alb.ModifyListenerAttributesOutput{}
req = c.newRequest(op, input, output)
return
}

View File

@ -12,6 +12,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/volcengine-alb/internal"
sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-certcenter"
)
@ -38,7 +39,7 @@ type SSLDeployerProviderConfig struct {
type SSLDeployerProvider struct {
config *SSLDeployerProviderConfig
logger *slog.Logger
sdkClient vealb.ALBAPI
sdkClient *internal.AlbClient
sslManager core.SSLManager
}
@ -259,7 +260,7 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo
return nil
}
func createSDKClient(accessKeyId, accessKeySecret, region string) (vealb.ALBAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.AlbClient, error) {
config := ve.NewConfig().
WithAkSk(accessKeyId, accessKeySecret).
WithRegion(region)
@ -269,6 +270,6 @@ func createSDKClient(accessKeyId, accessKeySecret, region string) (vealb.ALBAPI,
return nil, err
}
client := vealb.New(session)
client := internal.NewAlbClient(session)
return client, nil
}

View File

@ -0,0 +1,128 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/cdn"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/cdn/service_cdn.go
// to lightweight the vendor packages in the built binary.
type CdnClient struct {
*client.Client
}
func NewCdnClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *CdnClient {
c := p.ClientConfig(cdn.EndpointsID, cfgs...)
return newCdnClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newCdnClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *CdnClient {
svc := &CdnClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: cdn.ServiceName,
ServiceID: cdn.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2021-03-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *CdnClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *CdnClient) BatchDeployCert(input *cdn.BatchDeployCertInput) (*cdn.BatchDeployCertOutput, error) {
req, out := c.BatchDeployCertRequest(input)
return out, req.Send()
}
func (c *CdnClient) BatchDeployCertRequest(input *cdn.BatchDeployCertInput) (req *request.Request, output *cdn.BatchDeployCertOutput) {
op := &request.Operation{
Name: "BatchDeployCert",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &cdn.BatchDeployCertInput{}
}
output = &cdn.BatchDeployCertOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}
func (c *CdnClient) DescribeCertConfig(input *cdn.DescribeCertConfigInput) (*cdn.DescribeCertConfigOutput, error) {
req, out := c.DescribeCertConfigRequest(input)
return out, req.Send()
}
func (c *CdnClient) DescribeCertConfigRequest(input *cdn.DescribeCertConfigInput) (req *request.Request, output *cdn.DescribeCertConfigOutput) {
op := &request.Operation{
Name: "DescribeCertConfig",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &cdn.DescribeCertConfigInput{}
}
output = &cdn.DescribeCertConfigOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}
func (c *CdnClient) ListCdnDomains(input *cdn.ListCdnDomainsInput) (*cdn.ListCdnDomainsOutput, error) {
req, out := c.ListCdnDomainsRequest(input)
return out, req.Send()
}
func (c *CdnClient) ListCdnDomainsRequest(input *cdn.ListCdnDomainsInput) (req *request.Request, output *cdn.ListCdnDomainsOutput) {
op := &request.Operation{
Name: "ListCdnDomains",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &cdn.ListCdnDomainsInput{}
}
output = &cdn.ListCdnDomainsOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}

View File

@ -12,6 +12,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/volcengine-cdn/internal"
sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-cdn"
xcerthostname "github.com/certimate-go/certimate/pkg/utils/cert/hostname"
)
@ -31,7 +32,7 @@ type SSLDeployerProviderConfig struct {
type SSLDeployerProvider struct {
config *SSLDeployerProviderConfig
logger *slog.Logger
sdkClient vecdn.CDNAPI
sdkClient *internal.CdnClient
sslManager core.SSLManager
}
@ -247,7 +248,7 @@ func (d *SSLDeployerProvider) bindCert(ctx context.Context, domain string, cloud
return nil
}
func createSDKClient(accessKeyId, accessKeySecret string) (vecdn.CDNAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret string) (*internal.CdnClient, error) {
config := ve.NewConfig().
WithAkSk(accessKeyId, accessKeySecret)
@ -256,6 +257,6 @@ func createSDKClient(accessKeyId, accessKeySecret string) (vecdn.CDNAPI, error)
return nil, err
}
client := vecdn.New(session)
client := internal.NewCdnClient(session)
return client, nil
}

View File

@ -0,0 +1,122 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/clb"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/clb/service_clb.go
// to lightweight the vendor packages in the built binary.
type ClbClient struct {
*client.Client
}
func NewClbClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *ClbClient {
c := p.ClientConfig(clb.EndpointsID, cfgs...)
return newClbClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newClbClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *ClbClient {
svc := &ClbClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: clb.ServiceName,
ServiceID: clb.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2020-04-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *ClbClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *ClbClient) DescribeListeners(input *clb.DescribeListenersInput) (*clb.DescribeListenersOutput, error) {
req, out := c.DescribeListenersRequest(input)
return out, req.Send()
}
func (c *ClbClient) DescribeListenersRequest(input *clb.DescribeListenersInput) (req *request.Request, output *clb.DescribeListenersOutput) {
op := &request.Operation{
Name: "DescribeListeners",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &clb.DescribeListenersInput{}
}
output = &clb.DescribeListenersOutput{}
req = c.newRequest(op, input, output)
return
}
func (c *ClbClient) DescribeLoadBalancerAttributes(input *clb.DescribeLoadBalancerAttributesInput) (*clb.DescribeLoadBalancerAttributesOutput, error) {
req, out := c.DescribeLoadBalancerAttributesRequest(input)
return out, req.Send()
}
func (c *ClbClient) DescribeLoadBalancerAttributesRequest(input *clb.DescribeLoadBalancerAttributesInput) (req *request.Request, output *clb.DescribeLoadBalancerAttributesOutput) {
op := &request.Operation{
Name: "DescribeLoadBalancerAttributes",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &clb.DescribeLoadBalancerAttributesInput{}
}
output = &clb.DescribeLoadBalancerAttributesOutput{}
req = c.newRequest(op, input, output)
return
}
func (c *ClbClient) ModifyListenerAttributes(input *clb.ModifyListenerAttributesInput) (*clb.ModifyListenerAttributesOutput, error) {
req, out := c.ModifyListenerAttributesRequest(input)
return out, req.Send()
}
func (c *ClbClient) ModifyListenerAttributesRequest(input *clb.ModifyListenerAttributesInput) (req *request.Request, output *clb.ModifyListenerAttributesOutput) {
op := &request.Operation{
Name: "ModifyListenerAttributes",
HTTPMethod: "GET",
HTTPPath: "/",
}
if input == nil {
input = &clb.ModifyListenerAttributesInput{}
}
output = &clb.ModifyListenerAttributesOutput{}
req = c.newRequest(op, input, output)
return
}

View File

@ -11,6 +11,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/volcengine-clb/internal"
sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-certcenter"
)
@ -34,7 +35,7 @@ type SSLDeployerProviderConfig struct {
type SSLDeployerProvider struct {
config *SSLDeployerProviderConfig
logger *slog.Logger
sdkClient veclb.CLBAPI
sdkClient *internal.ClbClient
sslManager core.SSLManager
}
@ -211,7 +212,7 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo
return nil
}
func createSDKClient(accessKeyId, accessKeySecret, region string) (veclb.CLBAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.ClbClient, error) {
config := ve.NewConfig().
WithAkSk(accessKeyId, accessKeySecret).
WithRegion(region)
@ -221,6 +222,6 @@ func createSDKClient(accessKeyId, accessKeySecret, region string) (veclb.CLBAPI,
return nil, err
}
client := veclb.New(session)
client := internal.NewClbClient(session)
return client, nil
}

View File

@ -0,0 +1,80 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/dcdn"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/dcdn/service_dcdn.go
// to lightweight the vendor packages in the built binary.
type DcdnClient struct {
*client.Client
}
func NewDcdnClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *DcdnClient {
c := p.ClientConfig(dcdn.EndpointsID, cfgs...)
return newDcdnClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newDcdnClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *DcdnClient {
svc := &DcdnClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: dcdn.ServiceName,
ServiceID: dcdn.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2021-04-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *DcdnClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *DcdnClient) CreateCertBind(input *dcdn.CreateCertBindInput) (*dcdn.CreateCertBindOutput, error) {
req, out := c.CreateCertBindRequest(input)
return out, req.Send()
}
func (c *DcdnClient) CreateCertBindRequest(input *dcdn.CreateCertBindInput) (req *request.Request, output *dcdn.CreateCertBindOutput) {
op := &request.Operation{
Name: "CreateCertBind",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &dcdn.CreateCertBindInput{}
}
output = &dcdn.CreateCertBindOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}

View File

@ -12,6 +12,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/volcengine-dcdn/internal"
sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-certcenter"
)
@ -29,7 +30,7 @@ type SSLDeployerProviderConfig struct {
type SSLDeployerProvider struct {
config *SSLDeployerProviderConfig
logger *slog.Logger
sdkClient vedcdn.DCDNAPI
sdkClient *internal.DcdnClient
sslManager core.SSLManager
}
@ -104,7 +105,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke
return &core.SSLDeployResult{}, nil
}
func createSDKClient(accessKeyId, accessKeySecret, region string) (vedcdn.DCDNAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.DcdnClient, error) {
if region == "" {
region = "cn-beijing" // DCDN 服务默认区域:北京
}
@ -118,6 +119,6 @@ func createSDKClient(accessKeyId, accessKeySecret, region string) (vedcdn.DCDNAP
return nil, err
}
client := vedcdn.New(session)
client := internal.NewDcdnClient(session)
return client, nil
}

View File

@ -0,0 +1,104 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/cdn"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/cdn/service_cdn.go
// to lightweight the vendor packages in the built binary.
type CdnClient struct {
*client.Client
}
func NewCdnClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *CdnClient {
c := p.ClientConfig(cdn.EndpointsID, cfgs...)
return newCdnClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newCdnClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *CdnClient {
svc := &CdnClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: cdn.ServiceName,
ServiceID: cdn.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2021-03-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *CdnClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *CdnClient) AddCertificate(input *cdn.AddCertificateInput) (*cdn.AddCertificateOutput, error) {
req, out := c.AddCertificateRequest(input)
return out, req.Send()
}
func (c *CdnClient) AddCertificateRequest(input *cdn.AddCertificateInput) (req *request.Request, output *cdn.AddCertificateOutput) {
op := &request.Operation{
Name: "AddCertificate",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &cdn.AddCertificateInput{}
}
output = &cdn.AddCertificateOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}
func (c *CdnClient) ListCertInfo(input *cdn.ListCertInfoInput) (*cdn.ListCertInfoOutput, error) {
req, out := c.ListCertInfoRequest(input)
return out, req.Send()
}
func (c *CdnClient) ListCertInfoRequest(input *cdn.ListCertInfoInput) (req *request.Request, output *cdn.ListCertInfoOutput) {
op := &request.Operation{
Name: "ListCertInfo",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &cdn.ListCertInfoInput{}
}
output = &cdn.ListCertInfoOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}

View File

@ -16,6 +16,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-cdn/internal"
xcert "github.com/certimate-go/certimate/pkg/utils/cert"
)
@ -29,7 +30,7 @@ type SSLManagerProviderConfig struct {
type SSLManagerProvider struct {
config *SSLManagerProviderConfig
logger *slog.Logger
sdkClient vecdn.CDNAPI
sdkClient *internal.CdnClient
}
var _ core.SSLManager = (*SSLManagerProvider)(nil)
@ -142,7 +143,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey
}, nil
}
func createSDKClient(accessKeyId, accessKeySecret string) (vecdn.CDNAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret string) (*internal.CdnClient, error) {
config := ve.NewConfig().
WithAkSk(accessKeyId, accessKeySecret)
@ -151,6 +152,6 @@ func createSDKClient(accessKeyId, accessKeySecret string) (vecdn.CDNAPI, error)
return nil, err
}
client := vecdn.New(session)
client := internal.NewCdnClient(session)
return client, nil
}

View File

@ -0,0 +1,80 @@
package internal
import (
"github.com/volcengine/volcengine-go-sdk/service/certificateservice"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/client"
"github.com/volcengine/volcengine-go-sdk/volcengine/client/metadata"
"github.com/volcengine/volcengine-go-sdk/volcengine/corehandlers"
"github.com/volcengine/volcengine-go-sdk/volcengine/request"
"github.com/volcengine/volcengine-go-sdk/volcengine/signer/volc"
"github.com/volcengine/volcengine-go-sdk/volcengine/volcenginequery"
)
// This is a partial copy of https://github.com/volcengine/volcengine-go-sdk/blob/master/service/certificateservice/service_certificateservice.go
// to lightweight the vendor packages in the built binary.
type CertificateserviceClient struct {
*client.Client
}
func NewCertificateserviceClient(p client.ConfigProvider, cfgs ...*volcengine.Config) *CertificateserviceClient {
c := p.ClientConfig(certificateservice.EndpointsID, cfgs...)
return newCertificateserviceClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
func newCertificateserviceClient(cfg volcengine.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *CertificateserviceClient {
svc := &CertificateserviceClient{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: certificateservice.ServiceName,
ServiceID: certificateservice.ServiceID,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2024-10-01",
},
handlers,
),
}
svc.Handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
svc.Handlers.Build.PushBackNamed(corehandlers.AddHostExecEnvUserAgentHandler)
svc.Handlers.Sign.PushBackNamed(volc.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(volcenginequery.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(volcenginequery.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(volcenginequery.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(volcenginequery.UnmarshalErrorHandler)
return svc
}
func (c *CertificateserviceClient) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
return req
}
func (c *CertificateserviceClient) ImportCertificate(input *certificateservice.ImportCertificateInput) (*certificateservice.ImportCertificateOutput, error) {
req, out := c.ImportCertificateRequest(input)
return out, req.Send()
}
func (c *CertificateserviceClient) ImportCertificateRequest(input *certificateservice.ImportCertificateInput) (req *request.Request, output *certificateservice.ImportCertificateOutput) {
op := &request.Operation{
Name: "ImportCertificate",
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &certificateservice.ImportCertificateInput{}
}
output = &certificateservice.ImportCertificateOutput{}
req = c.newRequest(op, input, output)
req.HTTPRequest.Header.Set("Content-Type", "application/json; charset=utf-8")
return
}

View File

@ -11,6 +11,7 @@ import (
vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session"
"github.com/certimate-go/certimate/pkg/core"
"github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-certcenter/internal"
)
type SSLManagerProviderConfig struct {
@ -25,7 +26,7 @@ type SSLManagerProviderConfig struct {
type SSLManagerProvider struct {
config *SSLManagerProviderConfig
logger *slog.Logger
sdkClient vecs.CERTIFICATESERVICEAPI
sdkClient *internal.CertificateserviceClient
}
var _ core.SSLManager = (*SSLManagerProvider)(nil)
@ -88,7 +89,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey
}, nil
}
func createSDKClient(accessKeyId, accessKeySecret, region string) (vecs.CERTIFICATESERVICEAPI, error) {
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.CertificateserviceClient, error) {
if region == "" {
region = "cn-beijing" // 证书中心默认区域:北京
}
@ -102,6 +103,6 @@ func createSDKClient(accessKeyId, accessKeySecret, region string) (vecs.CERTIFIC
return nil, err
}
client := vecs.New(session)
client := internal.NewCertificateserviceClient(session)
return client, nil
}