- 新增获取最新APK版本信息和下载APK的公开接口 - 更新README文档,添加APK管理接口的使用说明 - 实现CI/CD工作流,支持自动构建和部署 - 优化APK存储逻辑,确保只保留最新APK文件
46 lines
1.3 KiB
Go
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
|
|
}
|