From 0285070c07a7a3885731b85bc914a47d34905319 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Sun, 1 Mar 2026 20:31:31 +0100 Subject: [PATCH] file provider --- http/controller.api.software.go | 26 ++++++++++++++++++++++++++ http/router.go | 1 + 2 files changed, 27 insertions(+) diff --git a/http/controller.api.software.go b/http/controller.api.software.go index 638e6bd..8d34cad 100644 --- a/http/controller.api.software.go +++ b/http/controller.api.software.go @@ -3,6 +3,7 @@ package http import ( "encoding/json" "net/http" + "strings" "teletype_softwares/domain" ) @@ -17,5 +18,30 @@ func NewAPISoftwareController(software_service domain.SoftwareServiceInterface) func (c *APISoftwareController) Index(w http.ResponseWriter, r *http.Request) { softwares, _ := c.softwareService.DetailedList() + + for _, softwareShowData := range softwares.Softwares { + for i := range softwareShowData.Releases { + release := &softwareShowData.Releases[i] + release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") + release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") + release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") + release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + } + if softwareShowData.LatestRelease != nil { + release := softwareShowData.LatestRelease + release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") + release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") + release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") + release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + } + if softwareShowData.WebPlayableRelease != nil { + release := softwareShowData.WebPlayableRelease + release.CartridgePath = strings.ReplaceAll(release.CartridgePath, "/softwares/", "/file/") + release.SourcePath = strings.ReplaceAll(release.SourcePath, "/softwares/", "/file/") + release.HTMLFolderPath = strings.ReplaceAll(release.HTMLFolderPath, "/softwares/", "/file/") + release.DocsFolderPath = strings.ReplaceAll(release.DocsFolderPath, "/softwares/", "/file/") + } + } + json.NewEncoder(w).Encode(softwares) } diff --git a/http/router.go b/http/router.go index e19f86b..28a7e8c 100755 --- a/http/router.go +++ b/http/router.go @@ -59,6 +59,7 @@ func (r *Router) Init() *chi.Mux { fs := http.FileServer(http.Dir("assets")) router.Handle("/assets/*", http.StripPrefix("/assets/", fs)) + router.Handle("/file", http.FileServer(http.Dir("/softwares"))) return router }