refactor: abstractions

This commit is contained in:
Fu Diwei 2025-06-15 22:17:49 +08:00
parent 4752c49fed
commit 4ac3618f7e
4 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,9 @@
package core
import (
"log/slog"
)
type WithLogger interface {
SetLogger(logger *slog.Logger)
}

View File

@ -0,0 +1,27 @@
package core
import (
"context"
)
// 表示定义消息通知器的抽象类型接口。
type Notifier interface {
WithLogger
// 发送通知。
//
// 入参:
// - ctx上下文。
// - subject通知主题。
// - message通知内容。
//
// 出参:
// - res发送结果。
// - err: 错误。
Notify(ctx context.Context, subject string, message string) (_res *NotifyResult, _err error)
}
// 表示通知发送结果的数据结构。
type NotifyResult struct {
ExtendedData map[string]any `json:"extendedData,omitempty"`
}

View File

@ -0,0 +1,27 @@
package core
import (
"context"
)
// 表示定义 SSL 证书部署器的抽象类型接口。
type SSLDeployer interface {
WithLogger
// 部署证书。
//
// 入参:
// - ctx上下文。
// - certPEM证书 PEM 内容。
// - privkeyPEM私钥 PEM 内容。
//
// 出参:
// - res部署结果。
// - err: 错误。
Deploy(ctx context.Context, certPEM string, privkeyPEM string) (_res *SSLDeployResult, _err error)
}
// 表示 SSL 证书部署结果的数据结构。
type SSLDeployResult struct {
ExtendedData map[string]any `json:"extendedData,omitempty"`
}

View File

@ -0,0 +1,30 @@
package core
import (
"context"
)
// 表示定义 SSL 证书管理器的抽象类型接口。
// 云服务商通常会提供 SSL 证书管理服务,可供用户集中管理证书。
type SSLManager interface {
WithLogger
// 上传证书。
//
// 入参:
// - ctx上下文。
// - certPEM证书 PEM 内容。
// - privkeyPEM私钥 PEM 内容。
//
// 出参:
// - res上传结果。
// - err: 错误。
Upload(ctx context.Context, certPEM string, privkeyPEM string) (_res *SSLUploadResult, _err error)
}
// 表示证书上传结果的数据结构,包含上传后的证书 ID、名称和其他数据。
type SSLUploadResult struct {
CertId string `json:"certId"`
CertName string `json:"certName,omitempty"`
ExtendedData map[string]any `json:"extendedData,omitempty"`
}