package router import ( "context" "encoding/json" "net/http" ) type Context struct { Ctx context.Context Request *http.Request Writer http.ResponseWriter PathMap map[string]string StatusCode int } func NewContext(writer http.ResponseWriter, request *http.Request) *Context { ctx := context.Background() rctx := &Context{ Writer: writer, Request: request, Ctx: ctx, PathMap: make(map[string]string), } return rctx } func (rctx *Context) SetHeader(key, value string) { rctx.Writer.Header().Set(key, value) } func (rctx *Context) SetStatus(httpStatus int) { rctx.StatusCode = httpStatus rctx.Writer.WriteHeader(httpStatus) } func (rctx *Context) SendJSON(payload any) { rctx.Writer.Header().Set("Content-Type", "application/json") json.NewEncoder(rctx.Writer).Encode(payload) } func (rctx *Context) SendText(payload string) { rctx.Writer.Header().Set("Content-Type", "text/plain") rctx.Writer.Write([]byte(payload)) } func (rctx *Context) GetHeader(key string) string { return rctx.Request.Header.Get(key) }