sw api endpoint

This commit is contained in:
2026-03-01 19:48:44 +01:00
parent f60a5786f6
commit 7623abb01d
4 changed files with 51 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
package http
import (
"encoding/json"
"net/http"
"teletype_softwares/domain"
)
type APISoftwareController struct {
softwareService domain.SoftwareServiceInterface
}
func NewAPISoftwareController(software_service domain.SoftwareServiceInterface) *APISoftwareController {
return &APISoftwareController{softwareService: software_service}
}
func (c *APISoftwareController) Index(w http.ResponseWriter, r *http.Request) {
softwares, _ := c.softwareService.DetailedList()
json.NewEncoder(w).Encode(softwares)
}
+1
View File
@@ -7,6 +7,7 @@ import (
func StartHttpServer(domain_instance domain.Domain) {
router := NewRouter(
NewAPISoftwareController(domain_instance.SoftwareService),
NewSoftwareController(domain_instance.SoftwareService),
NewSoftwareUpdaterController(domain_instance.SoftwareUpdaterService, domain_instance.SoftwareService),
NewDownloadController(domain_instance.DownloadService, domain_instance.SoftwareService),
+6
View File
@@ -7,6 +7,7 @@ import (
)
type Router struct {
apiSoftwareController *APISoftwareController
softwareController *SoftwareController
softwareUpdaterController *SoftwareUpdaterController
downloadController *DownloadController
@@ -16,6 +17,7 @@ type Router struct {
}
func NewRouter(
api_software_controller *APISoftwareController,
software_controller *SoftwareController,
software_updater_controller *SoftwareUpdaterController,
download_controller *DownloadController,
@@ -24,6 +26,7 @@ func NewRouter(
docs_controller *DocsController,
) *Router {
return &Router{
apiSoftwareController: api_software_controller,
softwareController: software_controller,
softwareUpdaterController: software_updater_controller,
downloadController: download_controller,
@@ -38,6 +41,9 @@ func (r *Router) Init() *chi.Mux {
router.Use(CORSMiddleware)
router.Get("/", r.rootController.Index)
router.Get("/api/software", r.apiSoftwareController.Index)
router.Get("/software", r.softwareController.Index)
router.Get("/software/{name}", r.softwareController.Show)