Files
updates/internal/app/server.go
lafay 3ac1a2ccf5
Some checks failed
Build Updates Server / build (push) Failing after 10s
Build Updates Server / build-docker (push) Has been skipped
feat(apk): 增加公开APK管理接口和CI/CD工作流
- 新增获取最新APK版本信息和下载APK的公开接口
- 更新README文档,添加APK管理接口的使用说明
- 实现CI/CD工作流,支持自动构建和部署
- 优化APK存储逻辑,确保只保留最新APK文件
2026-03-26 03:29:44 +08:00

46 lines
1.3 KiB
Go

package app
import (
"net/http"
"expo-updates-server-go/internal/handlers"
"expo-updates-server-go/internal/service"
"expo-updates-server-go/internal/storage"
)
type Config struct {
Port string
Hostname string
UpdatesRoot string
PrivateKey string
AdminToken string
}
type Server struct {
cfg Config
handlers *handlers.Handler
}
func NewServer(cfg Config) *Server {
store := storage.NewLocalStore(cfg.UpdatesRoot)
svc := service.NewUpdateService(store, cfg.Hostname, cfg.PrivateKey)
h := handlers.NewHandler(svc, cfg.AdminToken)
return &Server{cfg: cfg, handlers: h}
}
func (s *Server) Routes() http.Handler {
mux := http.NewServeMux()
mux.HandleFunc("/api/manifest", s.handlers.Manifest)
mux.HandleFunc("/api/assets", s.handlers.Asset)
mux.HandleFunc("/api/apk/latest", s.handlers.PublicLatestAPK)
mux.HandleFunc("/api/apk/download", s.handlers.PublicDownloadAPK)
mux.HandleFunc("/admin/publish", s.handlers.AdminPublish)
mux.HandleFunc("/admin/rollback", s.handlers.AdminRollback)
mux.HandleFunc("/admin/releases", s.handlers.AdminReleases)
mux.HandleFunc("/admin/apk/upload", s.handlers.AdminUploadAPK)
mux.HandleFunc("/admin/apk/download", s.handlers.AdminDownloadAPK)
mux.HandleFunc("/admin/apk/list", s.handlers.AdminListAPKs)
mux.HandleFunc("/healthz", s.handlers.Healthz)
return mux
}