feat: add cache, outbound HTTP, request protection, tasks and module scaffolding

This commit is contained in:
2026-09-23 13:38:25 +08:00
parent 467c890363
commit fe66221a9c
34 changed files with 3100 additions and 1 deletions

View File

@@ -117,6 +117,37 @@ func (c *Context) Context() context.Context {
// Prefer the transport-neutral methods on Context for portable handlers.
func (c *Context) Raw() http.ResponseWriter { return c.writer }
// Clone gives a buffering middleware its own response state and values map.
// Stored values themselves are shared; middleware must not mutate them concurrently.
func (c *Context) Clone(ctx context.Context, writer http.ResponseWriter) *Context {
clone := NewContext(c.request.Clone(ctx), writer, c.params)
for key, value := range c.values {
clone.values[key] = value
}
return clone
}
// WriteResponse commits a buffered response through GoOmni's response tracking.
func (c *Context) WriteResponse(status int, headers http.Header, body []byte) error {
if c.responded {
return nil
}
if c.writer == nil {
return apierrors.Internal(nil)
}
for key, values := range headers {
c.writer.Header()[key] = append([]string(nil), values...)
}
c.responded, c.status = true, status
c.writer.WriteHeader(status)
if len(body) > 0 {
if _, err := c.writer.Write(body); err != nil {
return apierrors.Internal(err)
}
}
return nil
}
func (c *Context) Param(name string) string { return c.params[name] }
func (c *Context) Query(name string) string {