fix(docs): correct swagger and package README

This commit is contained in:
yusing
2026-02-07 21:18:22 +08:00
parent b8f6e062bf
commit 2fcf141ae2
7 changed files with 26 additions and 12 deletions

View File

@@ -20,6 +20,7 @@ import (
// @Produce json
// @Success 200 {array} string
// @Failure 403 {object} apitypes.ErrorResponse
// @Failure 500 {object} apitypes.ErrorResponse
// @Router /homepage/categories [get]
func Categories(c *gin.Context) {
ep := entrypoint.FromCtx(c.Request.Context())

View File

@@ -36,6 +36,7 @@ type HomepageItemsRequest struct {
// @Success 200 {object} homepage.Homepage
// @Failure 400 {object} apitypes.ErrorResponse
// @Failure 403 {object} apitypes.ErrorResponse
// @Failure 500 {object} apitypes.ErrorResponse
// @Router /homepage/items [get]
func Items(c *gin.Context) {
var request HomepageItemsRequest
@@ -54,6 +55,11 @@ func Items(c *gin.Context) {
}
ep := entrypoint.FromCtx(c.Request.Context())
if ep == nil {
c.JSON(http.StatusInternalServerError, apitypes.Error("entrypoint not found in context", nil))
return
}
if httpheaders.IsWebsocket(c.Request.Header) {
websocket.PeriodicWrite(c, 2*time.Second, func() (any, error) {
return HomepageItems(ep, proto, hostname, &request), nil

View File

@@ -7,7 +7,6 @@ import (
entrypoint "github.com/yusing/godoxy/internal/entrypoint/types"
"github.com/yusing/godoxy/internal/route"
_ "github.com/yusing/goutils/apitypes"
apitypes "github.com/yusing/goutils/apitypes"
)

View File

@@ -45,7 +45,7 @@ type Entrypoint interface {
// Route registry access
GetRoute(alias string) (types.Route, bool)
AddRoute(r types.Route)
AddRoute(r types.Route) error
IterRoutes(yield func(r types.Route) bool)
NumRoutes() int
RoutesByProvider() map[string][]types.Route
@@ -368,7 +368,9 @@ route := &route.Route{
Port: route.Port{Proxy: 80, Target: 3000},
}
ep.AddRoute(route)
if err := ep.AddRoute(route); err != nil {
return err
}
```
## Context Integration

View File

@@ -54,9 +54,9 @@ var emptyCfg Config
func NewTestEntrypoint(t testing.TB, cfg *Config) *Entrypoint {
t.Helper()
task := task.GetTestTask(t)
ep := NewEntrypoint(task, cfg)
entrypoint.SetCtx(task, ep)
testTask := task.GetTestTask(t)
ep := NewEntrypoint(testTask, cfg)
entrypoint.SetCtx(testTask, ep)
return ep
}

View File

@@ -75,19 +75,22 @@ func (srv *httpServer) Listen(addr string, proto HTTPProto) error {
}
task := srv.ep.task.Subtask("http_server", false)
server, err := server.StartServer(task, opts)
s, err := server.StartServer(task, opts)
if err != nil {
return err
}
srv.stopFunc = task.FinishAndWait
srv.addr = addr
srv.srv = server
srv.srv = s
srv.routes = pool.New[types.HTTPRoute](fmt.Sprintf("[%s] %s", proto, addr))
srv.routes.DisableLog(srv.ep.httpPoolDisableLog.Load())
return nil
}
func (srv *httpServer) Close() {
if srv.stopFunc == nil {
return
}
srv.stopFunc(nil)
}
@@ -160,8 +163,8 @@ func serveNotFound(w http.ResponseWriter, r *http.Request) {
Msgf("not found: %s", r.Host)
errorPage, ok := errorpage.GetErrorPageByStatus(http.StatusNotFound)
if ok {
w.WriteHeader(http.StatusNotFound)
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(http.StatusNotFound)
if _, err := w.Write(errorPage); err != nil {
log.Err(err).Msg("failed to write error page")
}

View File

@@ -2,6 +2,7 @@ package entrypoint
import (
"errors"
"fmt"
"net"
"strconv"
@@ -12,17 +13,17 @@ import (
func (ep *Entrypoint) IterRoutes(yield func(r types.Route) bool) {
for _, r := range ep.HTTPRoutes().Iter {
if !yield(r) {
break
return
}
}
for _, r := range ep.streamRoutes.Iter {
if !yield(r) {
break
return
}
}
for _, r := range ep.excludedRoutes.Iter {
if !yield(r) {
break
return
}
}
}
@@ -73,6 +74,8 @@ func (ep *Entrypoint) AddRoute(r types.Route) error {
r.Stream().Close()
ep.streamRoutes.Del(r)
})
default:
return fmt.Errorf("unknown route type: %T", r)
}
return nil
}