2026-06-02 16:05:38 +08:00

82 lines
2.5 KiB
Go

package appapi
import (
"context"
"io"
"net/http"
"hyapp/services/gateway-service/internal/appconfig"
"hyapp/services/gateway-service/internal/client"
)
// ConfigReader 是 gateway 对后台 App 配置的只读依赖。
type ConfigReader interface {
ListH5Links(ctx context.Context) ([]appconfig.H5Link, error)
ListExploreTabs(ctx context.Context, appCode string) ([]appconfig.ExploreTab, error)
ListBanners(ctx context.Context, query appconfig.BannerQuery) ([]appconfig.Banner, error)
LatestVersion(ctx context.Context, query appconfig.VersionQuery) (appconfig.Version, error)
}
// ObjectUploader 是 gateway 上传接口依赖的对象存储最小能力。
type ObjectUploader interface {
PutObject(ctx context.Context, key string, reader io.Reader, sizeBytes int64, contentType string) (string, error)
}
// Handler owns app platform endpoints such as bootstrap, config, upload and device token binding.
// It does not own user identity or resource semantics; those remain in their owner services/packages.
type Handler struct {
appConfigReader ConfigReader
userDeviceClient client.UserDeviceClient
objectUploader ObjectUploader
}
type Config struct {
AppConfigReader ConfigReader
UserDeviceClient client.UserDeviceClient
ObjectUploader ObjectUploader
}
func New(config Config) *Handler {
return &Handler{
appConfigReader: config.AppConfigReader,
userDeviceClient: config.UserDeviceClient,
objectUploader: config.ObjectUploader,
}
}
func (h *Handler) GetAppBootstrap(writer http.ResponseWriter, request *http.Request) {
h.getAppBootstrap(writer, request)
}
func (h *Handler) ListH5Links(writer http.ResponseWriter, request *http.Request) {
h.listH5Links(writer, request)
}
func (h *Handler) ListExploreTabs(writer http.ResponseWriter, request *http.Request) {
h.listExploreTabs(writer, request)
}
func (h *Handler) ListAppBanners(writer http.ResponseWriter, request *http.Request) {
h.listAppBanners(writer, request)
}
func (h *Handler) GetAppVersion(writer http.ResponseWriter, request *http.Request) {
h.getAppVersion(writer, request)
}
func (h *Handler) UploadFile(writer http.ResponseWriter, request *http.Request) {
h.uploadFile(writer, request)
}
func (h *Handler) UploadAvatar(writer http.ResponseWriter, request *http.Request) {
h.uploadAvatar(writer, request)
}
func (h *Handler) ProxyEffectMedia(writer http.ResponseWriter, request *http.Request) {
h.proxyEffectMedia(writer, request)
}
func (h *Handler) HandlePushToken(writer http.ResponseWriter, request *http.Request) {
h.handlePushToken(writer, request)
}