package context import ( stdContext "context" "io" "net/http" "strings" ) type Context struct { RespWriter http.ResponseWriter Req *http.Request } func New(w http.ResponseWriter, r *http.Request) *Context { return &Context{ RespWriter: w, Req: r, } } func (c *Context) Context() stdContext.Context { if c.Req != nil { return c.Req.Context() } return stdContext.Background() } func (c *Context) Response() *http.Response { if c.Req != nil { if c.Req.Response == nil { c.Req.Response = &http.Response{Header: make(http.Header)} } return c.Req.Response } return nil } func (c *Context) String(raw string, status ...int) { code := http.StatusOK if len(status) != 0 { code = status[0] } c.RespWriter.WriteHeader(code) _, _ = io.Copy(c.RespWriter, strings.NewReader(raw)) } func (c *Context) IsMethod(m string) bool { return c.Req.Method == m } func (c *Context) Redirect(uri string, statusCode int) { http.Redirect(c.RespWriter, c.Req, uri, statusCode) } // Path returns requested path. // // The returned bytes are valid until your request handler returns. func (c *Context) Path() string { return c.Req.URL.Path } func (c *Context) Host() string { return c.Req.URL.Host }