89 lines
2.8 KiB
Go
89 lines
2.8 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, query appconfig.H5LinkQuery) ([]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
|
|
userAuthClient client.UserAuthClient
|
|
userDeviceClient client.UserDeviceClient
|
|
objectUploader ObjectUploader
|
|
}
|
|
|
|
type Config struct {
|
|
AppConfigReader ConfigReader
|
|
UserAuthClient client.UserAuthClient
|
|
UserDeviceClient client.UserDeviceClient
|
|
ObjectUploader ObjectUploader
|
|
}
|
|
|
|
func New(config Config) *Handler {
|
|
return &Handler{
|
|
appConfigReader: config.AppConfigReader,
|
|
userAuthClient: config.UserAuthClient,
|
|
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)
|
|
}
|
|
|
|
func (h *Handler) AppHeartbeat(writer http.ResponseWriter, request *http.Request) {
|
|
h.appHeartbeat(writer, request)
|
|
}
|