From 4c62b4bddfe6c1993aff634c0efaf644248b8a14 Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 21:51:57 +0330 Subject: [PATCH 1/6] feat: added some helper methods to context --- context.go | 14 ++++++++++++++ context_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/context.go b/context.go index c00e112..8e67655 100644 --- a/context.go +++ b/context.go @@ -56,6 +56,20 @@ func (c *Context) Params() Params { return c.params } +// Path returns request's path used for matching request to a handler. +func (c *Context) Path() string { + u := c.request.URL + if u.RawPath != "" { + return u.RawPath + } + return u.Path +} + +// Method returns request method. +func (c *Context) Method() string { + return c.request.Method +} + // QueryParam returns value of a query parameter func (c *Context) QueryParam(name string) string { queryParam := c.request.URL.Query().Get(name) diff --git a/context_test.go b/context_test.go index 5300230..99ddd1f 100644 --- a/context_test.go +++ b/context_test.go @@ -534,3 +534,28 @@ func TestContext_SetRequestHeader(t *testing.T) { ctx.SetRequestHeader("key", "value") assert.Equal(t, "value", ctx.GetRequestHeader("key")) } + +func TestContext_Path(t *testing.T) { + ctx := newContext(New()) + + req := httptest.NewRequest(http.MethodGet, "/path", nil) + req.URL.Path = "/path" + req.URL.RawPath = "" + + ctx.reset(req, nil) + + assert.Equal(t, "/path", ctx.Path()) + + req.URL.RawPath = "/path2" + assert.Equal(t, "/path2", ctx.Path()) +} + +func TestContext_Method(t *testing.T) { + ctx := newContext(New()) + + req := httptest.NewRequest(http.MethodDelete, "/path", nil) + + ctx.reset(req, nil) + + assert.Equal(t, http.MethodDelete, ctx.Method()) +} From 5980841f2bf9cba3510e079ec429ce17c7f21509 Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 21:53:34 +0330 Subject: [PATCH 2/6] feat: use new context methods in logger middleware --- middlewares/logger.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/middlewares/logger.go b/middlewares/logger.go index 7034bc5..34fec80 100644 --- a/middlewares/logger.go +++ b/middlewares/logger.go @@ -98,7 +98,6 @@ func NewLoggerWithConfig(cfg LoggerConfig) kid.MiddlewareFunc { next(c) end := time.Now() - req := c.Request() duration := end.Sub(start) status := c.Response().Status() @@ -108,9 +107,9 @@ func NewLoggerWithConfig(cfg LoggerConfig) kid.MiddlewareFunc { slog.Duration("latency_ns", duration), slog.String("latency", duration.String()), slog.Int("status", status), - slog.String("path", req.URL.Path), - slog.String("method", req.Method), - slog.String("user_agent", req.Header.Get("User-Agent")), + slog.String("path", c.Path()), + slog.String("method", c.Method()), + slog.String("user_agent", c.GetRequestHeader("User-Agent")), } if status < 400 { From 13165f234ded84dcda887e53f546e3d865e7ec27 Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 21:58:40 +0330 Subject: [PATCH 3/6] fix: define a constant variable for content type header --- context.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/context.go b/context.go index 8e67655..99b9784 100644 --- a/context.go +++ b/context.go @@ -6,6 +6,8 @@ import ( "sync" ) +const contentTypeHeader string = "Content-Type" + // Context is the context of current HTTP request. // It holds data related to current HTTP request. type Context struct { @@ -219,7 +221,6 @@ func (c *Context) GetRequestHeader(key string) string { // writeContentType sets content type header for response. // It won't overwrite content type if it's already set. func (c *Context) writeContentType(contentType string) { - contentTypeHeader := "Content-Type" if c.GetResponseHeader(contentTypeHeader) == "" { c.SetResponseHeader(contentTypeHeader, contentType) } From 515299373a8565039c0794780beb34a059ddeee7 Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 22:44:36 +0330 Subject: [PATCH 4/6] feat: added clone method to context --- context.go | 31 ++++ context_test.go | 33 +++++ cov | 357 +++++++++++++++++++++++++++++++++++++++++++++++ response.go | 8 ++ response_test.go | 16 +++ 5 files changed, 445 insertions(+) create mode 100644 cov diff --git a/context.go b/context.go index 99b9784..d0fa39d 100644 --- a/context.go +++ b/context.go @@ -1,6 +1,7 @@ package kid import ( + "context" "net/http" "net/url" "sync" @@ -243,6 +244,36 @@ func (c *Context) Get(key string) (any, bool) { return val, ok } +// Clone clones the context and returns it. +// +// Should be used when context is passed to the background jobs. +// +// Writes to the response of a cloned context will panic. +func (c *Context) Clone() *Context { + ctx := Context{ + request: c.request.Clone(context.Background()), + response: c.response.(*response).clone(), + kid: c.kid, + lock: sync.Mutex{}, + } + + // Copy path params. + params := make(Params, len(c.params)) + for k, v := range c.params { + params[k] = v + } + ctx.params = params + + // Copy storage. + storage := make(Map, len(c.storage)) + for k, v := range c.storage { + storage[k] = v + } + ctx.storage = storage + + return &ctx +} + // Debug returns whether we are in debug mode or not. func (c *Context) Debug() bool { return c.kid.Debug() diff --git a/context_test.go b/context_test.go index 99ddd1f..9650e52 100644 --- a/context_test.go +++ b/context_test.go @@ -559,3 +559,36 @@ func TestContext_Method(t *testing.T) { assert.Equal(t, http.MethodDelete, ctx.Method()) } + +func TestContext_Clone(t *testing.T) { + ctx := newContext(New()) + + req := httptest.NewRequest(http.MethodDelete, "/path", nil) + res := httptest.NewRecorder() + + ctx.reset(req, res) + + ctx.Set("key", "value1") + ctx.params["key"] = "value2" + + clonedCtx := ctx.Clone() + + ctx.Set("key", "value") + ctx.params["key"] = "value" + + assert.NotEqual(t, ctx, clonedCtx) + assert.NotEqual(t, ctx.request, clonedCtx.request) + assert.NotEqual(t, ctx.response, clonedCtx.response) + assert.Equal(t, "value1", clonedCtx.storage["key"]) + assert.Equal(t, "value2", clonedCtx.Param("key")) + assert.Equal(t, ctx.kid, clonedCtx.kid) + assert.NotNil(t, ctx.response.(*response).ResponseWriter) + + assert.Panics(t, func() { + clonedCtx.Byte(http.StatusAccepted, []byte("test")) + }) + + assert.NotPanics(t, func() { + clonedCtx.Response().Status() + }) +} diff --git a/cov b/cov new file mode 100644 index 0000000..819a617 --- /dev/null +++ b/cov @@ -0,0 +1,357 @@ +mode: set +github.com/mojixcoder/kid/html_renderer/html.go:42.87,52.2 2 1 +github.com/mojixcoder/kid/html_renderer/html.go:55.47,62.2 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:65.59,66.14 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:66.14,67.34 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:69.2,69.21 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:73.90,74.42 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:74.42,75.13 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:78.2,78.39 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:78.39,79.29 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:80.8,81.48 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:81.48,82.14 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:88.87,92.87 3 1 +github.com/mojixcoder/kid/html_renderer/html.go:92.87,93.17 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:93.17,95.4 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:97.3,97.42 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:97.42,99.4 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:101.3,101.23 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:101.23,103.4 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:103.9,105.4 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:107.3,107.13 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:110.2,110.16 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:110.16,112.3 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:114.2,114.40 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:118.53,119.31 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:119.31,121.3 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:123.2,124.16 2 1 +github.com/mojixcoder/kid/html_renderer/html.go:124.16,126.3 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:128.2,128.45 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:128.45,133.3 4 1 +github.com/mojixcoder/kid/html_renderer/html.go:135.2,137.12 2 1 +github.com/mojixcoder/kid/html_renderer/html.go:141.60,143.2 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:146.58,148.2 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:151.60,153.2 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:156.71,158.2 1 1 +github.com/mojixcoder/kid/html_renderer/html.go:161.70,166.2 4 1 +github.com/mojixcoder/kid/serializer/json.go:16.37,18.2 1 1 +github.com/mojixcoder/kid/serializer/json.go:21.84,25.43 3 1 +github.com/mojixcoder/kid/serializer/json.go:25.43,26.13 1 1 +github.com/mojixcoder/kid/serializer/json.go:31.71,32.62 1 1 +github.com/mojixcoder/kid/serializer/json.go:32.62,33.53 1 1 +github.com/mojixcoder/kid/serializer/json.go:33.53,34.14 1 1 +github.com/mojixcoder/kid/serializer/json.go:36.3,36.13 1 1 +github.com/mojixcoder/kid/serializer/json.go:38.2,38.12 1 1 +github.com/mojixcoder/kid/serializer/xml.go:16.36,18.2 1 1 +github.com/mojixcoder/kid/serializer/xml.go:21.83,25.43 3 1 +github.com/mojixcoder/kid/serializer/xml.go:25.43,26.13 1 1 +github.com/mojixcoder/kid/serializer/xml.go:31.70,32.61 1 1 +github.com/mojixcoder/kid/serializer/xml.go:32.61,33.55 1 1 +github.com/mojixcoder/kid/serializer/xml.go:33.55,34.14 1 1 +github.com/mojixcoder/kid/serializer/xml.go:36.3,36.13 1 1 +github.com/mojixcoder/kid/serializer/xml.go:38.2,38.12 1 1 +github.com/mojixcoder/kid/context.go:24.34,27.2 2 1 +github.com/mojixcoder/kid/context.go:30.78,35.2 4 1 +github.com/mojixcoder/kid/context.go:38.44,40.2 1 1 +github.com/mojixcoder/kid/context.go:43.43,45.2 1 1 +github.com/mojixcoder/kid/context.go:48.45,50.2 1 1 +github.com/mojixcoder/kid/context.go:53.45,55.2 1 1 +github.com/mojixcoder/kid/context.go:58.35,60.2 1 1 +github.com/mojixcoder/kid/context.go:63.33,65.21 2 1 +github.com/mojixcoder/kid/context.go:65.21,67.3 1 1 +github.com/mojixcoder/kid/context.go:68.2,68.15 1 1 +github.com/mojixcoder/kid/context.go:72.35,74.2 1 1 +github.com/mojixcoder/kid/context.go:77.50,80.2 2 1 +github.com/mojixcoder/kid/context.go:85.60,87.19 2 1 +github.com/mojixcoder/kid/context.go:87.19,89.3 1 1 +github.com/mojixcoder/kid/context.go:90.2,90.15 1 1 +github.com/mojixcoder/kid/context.go:94.44,96.2 1 1 +github.com/mojixcoder/kid/context.go:99.42,100.52 1 1 +github.com/mojixcoder/kid/context.go:100.52,101.13 1 1 +github.com/mojixcoder/kid/context.go:106.43,110.2 3 1 +github.com/mojixcoder/kid/context.go:114.64,118.2 3 1 +github.com/mojixcoder/kid/context.go:122.51,126.2 3 1 +github.com/mojixcoder/kid/context.go:130.43,132.2 1 1 +github.com/mojixcoder/kid/context.go:137.42,141.2 3 1 +github.com/mojixcoder/kid/context.go:145.63,149.2 3 1 +github.com/mojixcoder/kid/context.go:153.50,157.2 3 1 +github.com/mojixcoder/kid/context.go:161.42,163.2 1 1 +github.com/mojixcoder/kid/context.go:169.56,173.2 3 1 +github.com/mojixcoder/kid/context.go:176.52,180.2 3 1 +github.com/mojixcoder/kid/context.go:183.49,187.2 3 1 +github.com/mojixcoder/kid/context.go:190.47,194.2 3 1 +github.com/mojixcoder/kid/context.go:197.39,200.2 2 1 +github.com/mojixcoder/kid/context.go:203.56,205.2 1 1 +github.com/mojixcoder/kid/context.go:208.56,210.2 1 1 +github.com/mojixcoder/kid/context.go:213.55,215.2 1 1 +github.com/mojixcoder/kid/context.go:218.55,220.2 1 1 +github.com/mojixcoder/kid/context.go:224.56,225.50 1 1 +github.com/mojixcoder/kid/context.go:225.50,227.3 1 1 +github.com/mojixcoder/kid/context.go:231.44,236.2 3 1 +github.com/mojixcoder/kid/context.go:239.47,245.2 4 1 +github.com/mojixcoder/kid/context.go:252.36,262.29 3 1 +github.com/mojixcoder/kid/context.go:262.29,264.3 1 0 +github.com/mojixcoder/kid/context.go:265.2,269.30 3 1 +github.com/mojixcoder/kid/context.go:269.30,271.3 1 0 +github.com/mojixcoder/kid/context.go:272.2,274.13 2 1 +github.com/mojixcoder/kid/context.go:278.32,280.2 1 1 +github.com/mojixcoder/kid/defaults.go:11.56,13.3 1 1 +github.com/mojixcoder/kid/defaults.go:18.64,20.3 1 1 +github.com/mojixcoder/kid/group.go:16.75,18.2 1 1 +github.com/mojixcoder/kid/group.go:23.86,25.2 1 1 +github.com/mojixcoder/kid/group.go:30.87,32.2 1 1 +github.com/mojixcoder/kid/group.go:37.86,39.2 1 1 +github.com/mojixcoder/kid/group.go:44.88,46.2 1 1 +github.com/mojixcoder/kid/group.go:51.89,53.2 1 1 +github.com/mojixcoder/kid/group.go:58.87,60.2 1 1 +github.com/mojixcoder/kid/group.go:65.90,67.2 1 1 +github.com/mojixcoder/kid/group.go:72.90,74.2 1 1 +github.com/mojixcoder/kid/group.go:79.88,81.2 1 1 +github.com/mojixcoder/kid/group.go:86.86,88.2 1 1 +github.com/mojixcoder/kid/group.go:91.104,96.2 3 1 +github.com/mojixcoder/kid/group.go:99.75,103.2 3 1 +github.com/mojixcoder/kid/group.go:106.83,108.28 2 1 +github.com/mojixcoder/kid/group.go:108.28,110.3 1 1 +github.com/mojixcoder/kid/group.go:112.2,115.21 3 1 +github.com/mojixcoder/kid/kid.go:57.17,70.28 2 1 +github.com/mojixcoder/kid/kid.go:70.28,72.3 1 1 +github.com/mojixcoder/kid/kid.go:74.2,74.13 1 1 +github.com/mojixcoder/kid/kid.go:80.42,88.2 5 1 +github.com/mojixcoder/kid/kid.go:93.71,101.2 5 1 +github.com/mojixcoder/kid/kid.go:104.51,109.2 3 1 +github.com/mojixcoder/kid/kid.go:112.46,116.2 2 1 +github.com/mojixcoder/kid/kid.go:121.84,123.2 1 1 +github.com/mojixcoder/kid/kid.go:128.85,130.2 1 1 +github.com/mojixcoder/kid/kid.go:135.84,137.2 1 1 +github.com/mojixcoder/kid/kid.go:142.86,144.2 1 1 +github.com/mojixcoder/kid/kid.go:149.87,151.2 1 1 +github.com/mojixcoder/kid/kid.go:156.85,158.2 1 1 +github.com/mojixcoder/kid/kid.go:163.88,165.2 1 1 +github.com/mojixcoder/kid/kid.go:170.88,172.2 1 1 +github.com/mojixcoder/kid/kid.go:177.86,179.2 1 1 +github.com/mojixcoder/kid/kid.go:184.84,186.2 1 1 +github.com/mojixcoder/kid/kid.go:191.73,193.2 1 1 +github.com/mojixcoder/kid/kid.go:199.102,201.2 1 1 +github.com/mojixcoder/kid/kid.go:206.81,208.2 1 1 +github.com/mojixcoder/kid/kid.go:213.91,219.2 3 1 +github.com/mojixcoder/kid/kid.go:222.65,232.24 6 1 +github.com/mojixcoder/kid/kid.go:232.24,234.3 1 1 +github.com/mojixcoder/kid/kid.go:234.8,234.39 1 1 +github.com/mojixcoder/kid/kid.go:234.39,236.3 1 1 +github.com/mojixcoder/kid/kid.go:236.8,239.3 2 1 +github.com/mojixcoder/kid/kid.go:241.2,243.29 2 1 +github.com/mojixcoder/kid/kid.go:243.29,245.3 1 1 +github.com/mojixcoder/kid/kid.go:247.2,247.15 1 1 +github.com/mojixcoder/kid/kid.go:251.105,252.45 1 1 +github.com/mojixcoder/kid/kid.go:252.45,254.3 1 1 +github.com/mojixcoder/kid/kid.go:255.2,255.16 1 1 +github.com/mojixcoder/kid/kid.go:259.28,261.2 1 1 +github.com/mojixcoder/kid/kid.go:264.79,268.2 3 1 +github.com/mojixcoder/kid/kid.go:271.44,272.27 1 1 +github.com/mojixcoder/kid/kid.go:272.27,276.3 2 1 +github.com/mojixcoder/kid/kid.go:280.50,288.2 5 1 +github.com/mojixcoder/kid/kid.go:291.69,292.15 1 1 +github.com/mojixcoder/kid/kid.go:292.15,294.3 1 1 +github.com/mojixcoder/kid/kid.go:298.33,299.21 1 1 +github.com/mojixcoder/kid/kid.go:299.21,301.3 1 1 +github.com/mojixcoder/kid/kid.go:302.2,302.15 1 1 +github.com/mojixcoder/kid/kid.go:306.61,307.25 1 1 +github.com/mojixcoder/kid/kid.go:307.25,308.24 1 1 +github.com/mojixcoder/kid/kid.go:308.24,310.4 1 1 +github.com/mojixcoder/kid/kid.go:311.3,311.24 1 1 +github.com/mojixcoder/kid/kid.go:313.2,313.21 1 1 +github.com/mojixcoder/kid/kid.go:317.40,318.14 1 1 +github.com/mojixcoder/kid/kid.go:318.14,319.17 1 1 +github.com/mojixcoder/kid/kid.go:322.2,322.34 1 1 +github.com/mojixcoder/kid/kid.go:323.109,324.33 1 1 +github.com/mojixcoder/kid/kid.go:324.33,325.18 1 1 +github.com/mojixcoder/kid/options.go:18.35,20.2 1 1 +github.com/mojixcoder/kid/options.go:23.35,24.33 1 1 +github.com/mojixcoder/kid/options.go:24.33,26.3 1 1 +github.com/mojixcoder/kid/options.go:30.66,33.33 2 1 +github.com/mojixcoder/kid/options.go:33.33,35.3 1 1 +github.com/mojixcoder/kid/options.go:39.65,42.33 2 1 +github.com/mojixcoder/kid/options.go:42.33,44.3 1 1 +github.com/mojixcoder/kid/options.go:48.66,51.33 2 1 +github.com/mojixcoder/kid/options.go:51.33,53.3 1 1 +github.com/mojixcoder/kid/options.go:57.54,60.33 2 1 +github.com/mojixcoder/kid/options.go:60.33,62.3 1 1 +github.com/mojixcoder/kid/options.go:66.62,69.33 2 1 +github.com/mojixcoder/kid/options.go:69.33,71.3 1 1 +github.com/mojixcoder/kid/response.go:43.56,49.2 2 1 +github.com/mojixcoder/kid/response.go:52.42,53.17 1 1 +github.com/mojixcoder/kid/response.go:53.17,55.3 1 1 +github.com/mojixcoder/kid/response.go:57.2,57.17 1 1 +github.com/mojixcoder/kid/response.go:62.37,63.17 1 1 +github.com/mojixcoder/kid/response.go:63.17,65.3 1 1 +github.com/mojixcoder/kid/response.go:67.2,68.40 2 1 +github.com/mojixcoder/kid/response.go:72.49,79.2 4 1 +github.com/mojixcoder/kid/response.go:82.31,84.2 1 1 +github.com/mojixcoder/kid/response.go:87.35,89.2 1 1 +github.com/mojixcoder/kid/response.go:92.33,94.2 1 1 +github.com/mojixcoder/kid/response.go:97.28,100.2 2 1 +github.com/mojixcoder/kid/response.go:103.66,106.2 2 1 +github.com/mojixcoder/kid/response.go:111.37,114.2 2 1 +github.com/mojixcoder/kid/static.go:21.57,23.2 1 1 +github.com/mojixcoder/kid/static.go:26.51,28.16 2 1 +github.com/mojixcoder/kid/static.go:28.16,30.3 1 1 +github.com/mojixcoder/kid/static.go:32.2,32.21 1 1 +github.com/mojixcoder/kid/static.go:36.69,45.2 5 1 +github.com/mojixcoder/kid/static.go:48.38,49.30 1 1 +github.com/mojixcoder/kid/static.go:49.30,51.3 1 1 +github.com/mojixcoder/kid/static.go:52.2,52.13 1 1 +github.com/mojixcoder/kid/tree.go:62.21,67.2 1 1 +github.com/mojixcoder/kid/tree.go:70.21,78.2 3 1 +github.com/mojixcoder/kid/tree.go:81.109,82.23 1 1 +github.com/mojixcoder/kid/tree.go:82.23,83.53 1 1 +github.com/mojixcoder/kid/tree.go:86.2,94.35 5 1 +github.com/mojixcoder/kid/tree.go:94.35,103.27 7 1 +github.com/mojixcoder/kid/tree.go:103.27,104.19 1 1 +github.com/mojixcoder/kid/tree.go:104.19,105.70 1 1 +github.com/mojixcoder/kid/tree.go:108.4,108.87 1 1 +github.com/mojixcoder/kid/tree.go:108.87,111.5 2 1 +github.com/mojixcoder/kid/tree.go:111.10,113.5 1 1 +github.com/mojixcoder/kid/tree.go:114.9,115.87 1 1 +github.com/mojixcoder/kid/tree.go:115.87,118.5 2 1 +github.com/mojixcoder/kid/tree.go:118.10,120.5 1 1 +github.com/mojixcoder/kid/tree.go:126.54,127.14 1 1 +github.com/mojixcoder/kid/tree.go:127.14,129.3 1 1 +github.com/mojixcoder/kid/tree.go:131.2,131.22 1 1 +github.com/mojixcoder/kid/tree.go:131.22,133.3 1 1 +github.com/mojixcoder/kid/tree.go:136.2,136.15 1 1 +github.com/mojixcoder/kid/tree.go:136.15,138.3 1 1 +github.com/mojixcoder/kid/tree.go:141.2,141.29 1 1 +github.com/mojixcoder/kid/tree.go:145.59,146.49 1 1 +github.com/mojixcoder/kid/tree.go:146.49,148.3 1 1 +github.com/mojixcoder/kid/tree.go:149.2,149.17 1 1 +github.com/mojixcoder/kid/tree.go:153.60,154.14 1 1 +github.com/mojixcoder/kid/tree.go:154.14,156.3 1 1 +github.com/mojixcoder/kid/tree.go:158.2,158.18 1 1 +github.com/mojixcoder/kid/tree.go:162.66,163.39 1 1 +github.com/mojixcoder/kid/tree.go:163.39,164.105 1 1 +github.com/mojixcoder/kid/tree.go:164.105,166.4 1 1 +github.com/mojixcoder/kid/tree.go:169.2,169.12 1 1 +github.com/mojixcoder/kid/tree.go:173.37,175.2 1 1 +github.com/mojixcoder/kid/tree.go:178.67,179.28 1 1 +github.com/mojixcoder/kid/tree.go:179.28,180.35 1 1 +github.com/mojixcoder/kid/tree.go:180.35,181.89 1 1 +github.com/mojixcoder/kid/tree.go:184.3,184.23 1 1 +github.com/mojixcoder/kid/tree.go:188.39,190.15 2 1 +github.com/mojixcoder/kid/tree.go:190.15,191.15 1 1 +github.com/mojixcoder/kid/tree.go:191.15,193.4 1 1 +github.com/mojixcoder/kid/tree.go:193.9,195.4 1 1 +github.com/mojixcoder/kid/tree.go:200.33,201.84 1 1 +github.com/mojixcoder/kid/tree.go:201.84,203.3 1 1 +github.com/mojixcoder/kid/tree.go:204.2,204.14 1 1 +github.com/mojixcoder/kid/tree.go:208.32,209.39 1 1 +github.com/mojixcoder/kid/tree.go:209.39,211.3 1 1 +github.com/mojixcoder/kid/tree.go:212.2,212.14 1 1 +github.com/mojixcoder/kid/tree.go:216.85,224.22 5 1 +github.com/mojixcoder/kid/tree.go:224.22,228.27 2 1 +github.com/mojixcoder/kid/tree.go:228.27,231.20 2 1 +github.com/mojixcoder/kid/tree.go:231.20,233.5 1 1 +github.com/mojixcoder/kid/tree.go:235.4,235.38 1 1 +github.com/mojixcoder/kid/tree.go:235.38,237.5 1 1 +github.com/mojixcoder/kid/tree.go:240.3,240.39 1 1 +github.com/mojixcoder/kid/tree.go:240.39,241.61 1 1 +github.com/mojixcoder/kid/tree.go:241.61,245.24 3 1 +github.com/mojixcoder/kid/tree.go:249.3,249.19 1 1 +github.com/mojixcoder/kid/tree.go:249.19,251.4 1 1 +github.com/mojixcoder/kid/tree.go:254.3,255.8 2 1 +github.com/mojixcoder/kid/tree.go:258.2,258.27 1 1 +github.com/mojixcoder/kid/tree.go:262.78,267.12 3 1 +github.com/mojixcoder/kid/tree.go:267.12,269.3 1 1 +github.com/mojixcoder/kid/tree.go:271.2,271.33 1 1 +github.com/mojixcoder/kid/tree.go:271.33,273.3 1 1 +github.com/mojixcoder/kid/tree.go:275.2,275.57 1 1 +github.com/mojixcoder/kid/tree.go:281.44,282.13 1 1 +github.com/mojixcoder/kid/tree.go:282.13,284.3 1 1 +github.com/mojixcoder/kid/tree.go:286.2,286.17 1 1 +github.com/mojixcoder/kid/tree.go:286.17,288.3 1 1 +github.com/mojixcoder/kid/tree.go:290.2,290.10 1 1 +github.com/mojixcoder/kid/tree.go:290.10,292.3 1 1 +github.com/mojixcoder/kid/tree.go:295.2,296.30 2 1 +github.com/mojixcoder/kid/tree.go:296.30,297.45 1 1 +github.com/mojixcoder/kid/tree.go:297.45,298.12 1 1 +github.com/mojixcoder/kid/tree.go:300.3,300.23 1 1 +github.com/mojixcoder/kid/tree.go:303.2,303.22 1 1 +github.com/mojixcoder/kid/utils.go:8.54,9.26 1 1 +github.com/mojixcoder/kid/utils.go:9.26,11.3 1 1 +github.com/mojixcoder/kid/utils.go:15.46,16.26 1 1 +github.com/mojixcoder/kid/utils.go:16.26,18.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:74.35,76.2 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:79.59,87.26 7 1 +github.com/mojixcoder/kid/middlewares/cors.go:87.26,89.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:91.2,91.52 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:91.52,92.31 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:92.31,100.20 6 1 +github.com/mojixcoder/kid/middlewares/cors.go:100.20,103.5 2 1 +github.com/mojixcoder/kid/middlewares/cors.go:105.4,105.39 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:105.39,108.5 2 1 +github.com/mojixcoder/kid/middlewares/cors.go:110.4,110.52 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:110.52,112.5 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:112.10,114.5 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:116.4,116.101 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:116.101,118.5 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:120.4,123.21 3 1 +github.com/mojixcoder/kid/middlewares/cors.go:124.15,125.12 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:126.14,131.38 4 1 +github.com/mojixcoder/kid/middlewares/cors.go:138.42,140.2 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:143.77,144.33 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:144.33,146.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:148.2,148.26 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:148.26,150.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:152.2,152.40 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:152.40,153.15 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:153.15,156.4 2 1 +github.com/mojixcoder/kid/middlewares/cors.go:157.3,157.18 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:157.18,159.4 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:162.2,162.14 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:166.67,167.25 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:167.25,169.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:173.39,174.34 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:174.34,176.3 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:178.2,178.34 1 1 +github.com/mojixcoder/kid/middlewares/cors.go:178.34,180.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:74.37,76.2 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:79.63,88.52 6 1 +github.com/mojixcoder/kid/middlewares/logger.go:88.52,89.31 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:89.31,91.44 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:91.44,94.5 2 1 +github.com/mojixcoder/kid/middlewares/logger.go:96.4,115.20 7 1 +github.com/mojixcoder/kid/middlewares/logger.go:115.20,117.5 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:117.10,117.28 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:117.28,119.5 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:119.10,121.5 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:127.50,128.23 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:128.23,130.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:132.2,132.18 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:133.16,134.88 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:135.16,136.88 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:137.10,138.31 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:143.43,144.20 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:144.20,146.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:148.2,148.22 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:148.22,150.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:152.2,152.29 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:152.29,154.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:156.2,156.33 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:156.33,158.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:160.2,160.33 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:160.33,162.3 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:164.2,164.20 1 1 +github.com/mojixcoder/kid/middlewares/logger.go:164.20,166.3 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:32.44,34.3 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:38.39,40.2 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:43.67,44.52 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:44.52,45.31 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:45.31,46.17 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:46.17,47.37 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:47.37,48.19 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:48.19,49.26 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:49.26,51.8 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:53.7,53.30 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:53.30,56.8 2 1 +github.com/mojixcoder/kid/middlewares/recovery.go:59.6,59.31 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:59.31,61.7 1 1 +github.com/mojixcoder/kid/middlewares/recovery.go:65.4,65.11 1 1 diff --git a/response.go b/response.go index d3440af..59033cc 100644 --- a/response.go +++ b/response.go @@ -104,3 +104,11 @@ func (r *response) Hijack() (net.Conn, *bufio.ReadWriter, error) { r.written = true return r.ResponseWriter.(http.Hijacker).Hijack() } + +// clone clones the current response instance. +// +// No writes are permitted. +func (r response) clone() *response { + r.ResponseWriter = nil + return &r +} diff --git a/response_test.go b/response_test.go index edd6298..b6b2cea 100644 --- a/response_test.go +++ b/response_test.go @@ -104,3 +104,19 @@ func TestResponseWriter_Status(t *testing.T) { assert.Equal(t, http.StatusAccepted, res.Status()) } + +func TestResponse_clone(t *testing.T) { + res := newResponse(httptest.NewRecorder()).(*response) + res.size = 10 + res.status = 200 + res.written = true + + clonedRes := res.clone() + + assert.NotEqual(t, res, clonedRes) + assert.NotNil(t, res.ResponseWriter) + assert.Nil(t, clonedRes.ResponseWriter) + assert.Equal(t, res.size, clonedRes.size) + assert.Equal(t, res.written, clonedRes.written) + assert.Equal(t, res.status, clonedRes.status) +} From b3bbd788e3cf4f837844bc430c5aa4a0516273f2 Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 22:53:11 +0330 Subject: [PATCH 5/6] fix: remove a redundant file --- cov | 357 ------------------------------------------------------------ 1 file changed, 357 deletions(-) delete mode 100644 cov diff --git a/cov b/cov deleted file mode 100644 index 819a617..0000000 --- a/cov +++ /dev/null @@ -1,357 +0,0 @@ -mode: set -github.com/mojixcoder/kid/html_renderer/html.go:42.87,52.2 2 1 -github.com/mojixcoder/kid/html_renderer/html.go:55.47,62.2 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:65.59,66.14 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:66.14,67.34 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:69.2,69.21 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:73.90,74.42 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:74.42,75.13 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:78.2,78.39 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:78.39,79.29 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:80.8,81.48 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:81.48,82.14 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:88.87,92.87 3 1 -github.com/mojixcoder/kid/html_renderer/html.go:92.87,93.17 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:93.17,95.4 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:97.3,97.42 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:97.42,99.4 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:101.3,101.23 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:101.23,103.4 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:103.9,105.4 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:107.3,107.13 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:110.2,110.16 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:110.16,112.3 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:114.2,114.40 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:118.53,119.31 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:119.31,121.3 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:123.2,124.16 2 1 -github.com/mojixcoder/kid/html_renderer/html.go:124.16,126.3 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:128.2,128.45 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:128.45,133.3 4 1 -github.com/mojixcoder/kid/html_renderer/html.go:135.2,137.12 2 1 -github.com/mojixcoder/kid/html_renderer/html.go:141.60,143.2 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:146.58,148.2 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:151.60,153.2 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:156.71,158.2 1 1 -github.com/mojixcoder/kid/html_renderer/html.go:161.70,166.2 4 1 -github.com/mojixcoder/kid/serializer/json.go:16.37,18.2 1 1 -github.com/mojixcoder/kid/serializer/json.go:21.84,25.43 3 1 -github.com/mojixcoder/kid/serializer/json.go:25.43,26.13 1 1 -github.com/mojixcoder/kid/serializer/json.go:31.71,32.62 1 1 -github.com/mojixcoder/kid/serializer/json.go:32.62,33.53 1 1 -github.com/mojixcoder/kid/serializer/json.go:33.53,34.14 1 1 -github.com/mojixcoder/kid/serializer/json.go:36.3,36.13 1 1 -github.com/mojixcoder/kid/serializer/json.go:38.2,38.12 1 1 -github.com/mojixcoder/kid/serializer/xml.go:16.36,18.2 1 1 -github.com/mojixcoder/kid/serializer/xml.go:21.83,25.43 3 1 -github.com/mojixcoder/kid/serializer/xml.go:25.43,26.13 1 1 -github.com/mojixcoder/kid/serializer/xml.go:31.70,32.61 1 1 -github.com/mojixcoder/kid/serializer/xml.go:32.61,33.55 1 1 -github.com/mojixcoder/kid/serializer/xml.go:33.55,34.14 1 1 -github.com/mojixcoder/kid/serializer/xml.go:36.3,36.13 1 1 -github.com/mojixcoder/kid/serializer/xml.go:38.2,38.12 1 1 -github.com/mojixcoder/kid/context.go:24.34,27.2 2 1 -github.com/mojixcoder/kid/context.go:30.78,35.2 4 1 -github.com/mojixcoder/kid/context.go:38.44,40.2 1 1 -github.com/mojixcoder/kid/context.go:43.43,45.2 1 1 -github.com/mojixcoder/kid/context.go:48.45,50.2 1 1 -github.com/mojixcoder/kid/context.go:53.45,55.2 1 1 -github.com/mojixcoder/kid/context.go:58.35,60.2 1 1 -github.com/mojixcoder/kid/context.go:63.33,65.21 2 1 -github.com/mojixcoder/kid/context.go:65.21,67.3 1 1 -github.com/mojixcoder/kid/context.go:68.2,68.15 1 1 -github.com/mojixcoder/kid/context.go:72.35,74.2 1 1 -github.com/mojixcoder/kid/context.go:77.50,80.2 2 1 -github.com/mojixcoder/kid/context.go:85.60,87.19 2 1 -github.com/mojixcoder/kid/context.go:87.19,89.3 1 1 -github.com/mojixcoder/kid/context.go:90.2,90.15 1 1 -github.com/mojixcoder/kid/context.go:94.44,96.2 1 1 -github.com/mojixcoder/kid/context.go:99.42,100.52 1 1 -github.com/mojixcoder/kid/context.go:100.52,101.13 1 1 -github.com/mojixcoder/kid/context.go:106.43,110.2 3 1 -github.com/mojixcoder/kid/context.go:114.64,118.2 3 1 -github.com/mojixcoder/kid/context.go:122.51,126.2 3 1 -github.com/mojixcoder/kid/context.go:130.43,132.2 1 1 -github.com/mojixcoder/kid/context.go:137.42,141.2 3 1 -github.com/mojixcoder/kid/context.go:145.63,149.2 3 1 -github.com/mojixcoder/kid/context.go:153.50,157.2 3 1 -github.com/mojixcoder/kid/context.go:161.42,163.2 1 1 -github.com/mojixcoder/kid/context.go:169.56,173.2 3 1 -github.com/mojixcoder/kid/context.go:176.52,180.2 3 1 -github.com/mojixcoder/kid/context.go:183.49,187.2 3 1 -github.com/mojixcoder/kid/context.go:190.47,194.2 3 1 -github.com/mojixcoder/kid/context.go:197.39,200.2 2 1 -github.com/mojixcoder/kid/context.go:203.56,205.2 1 1 -github.com/mojixcoder/kid/context.go:208.56,210.2 1 1 -github.com/mojixcoder/kid/context.go:213.55,215.2 1 1 -github.com/mojixcoder/kid/context.go:218.55,220.2 1 1 -github.com/mojixcoder/kid/context.go:224.56,225.50 1 1 -github.com/mojixcoder/kid/context.go:225.50,227.3 1 1 -github.com/mojixcoder/kid/context.go:231.44,236.2 3 1 -github.com/mojixcoder/kid/context.go:239.47,245.2 4 1 -github.com/mojixcoder/kid/context.go:252.36,262.29 3 1 -github.com/mojixcoder/kid/context.go:262.29,264.3 1 0 -github.com/mojixcoder/kid/context.go:265.2,269.30 3 1 -github.com/mojixcoder/kid/context.go:269.30,271.3 1 0 -github.com/mojixcoder/kid/context.go:272.2,274.13 2 1 -github.com/mojixcoder/kid/context.go:278.32,280.2 1 1 -github.com/mojixcoder/kid/defaults.go:11.56,13.3 1 1 -github.com/mojixcoder/kid/defaults.go:18.64,20.3 1 1 -github.com/mojixcoder/kid/group.go:16.75,18.2 1 1 -github.com/mojixcoder/kid/group.go:23.86,25.2 1 1 -github.com/mojixcoder/kid/group.go:30.87,32.2 1 1 -github.com/mojixcoder/kid/group.go:37.86,39.2 1 1 -github.com/mojixcoder/kid/group.go:44.88,46.2 1 1 -github.com/mojixcoder/kid/group.go:51.89,53.2 1 1 -github.com/mojixcoder/kid/group.go:58.87,60.2 1 1 -github.com/mojixcoder/kid/group.go:65.90,67.2 1 1 -github.com/mojixcoder/kid/group.go:72.90,74.2 1 1 -github.com/mojixcoder/kid/group.go:79.88,81.2 1 1 -github.com/mojixcoder/kid/group.go:86.86,88.2 1 1 -github.com/mojixcoder/kid/group.go:91.104,96.2 3 1 -github.com/mojixcoder/kid/group.go:99.75,103.2 3 1 -github.com/mojixcoder/kid/group.go:106.83,108.28 2 1 -github.com/mojixcoder/kid/group.go:108.28,110.3 1 1 -github.com/mojixcoder/kid/group.go:112.2,115.21 3 1 -github.com/mojixcoder/kid/kid.go:57.17,70.28 2 1 -github.com/mojixcoder/kid/kid.go:70.28,72.3 1 1 -github.com/mojixcoder/kid/kid.go:74.2,74.13 1 1 -github.com/mojixcoder/kid/kid.go:80.42,88.2 5 1 -github.com/mojixcoder/kid/kid.go:93.71,101.2 5 1 -github.com/mojixcoder/kid/kid.go:104.51,109.2 3 1 -github.com/mojixcoder/kid/kid.go:112.46,116.2 2 1 -github.com/mojixcoder/kid/kid.go:121.84,123.2 1 1 -github.com/mojixcoder/kid/kid.go:128.85,130.2 1 1 -github.com/mojixcoder/kid/kid.go:135.84,137.2 1 1 -github.com/mojixcoder/kid/kid.go:142.86,144.2 1 1 -github.com/mojixcoder/kid/kid.go:149.87,151.2 1 1 -github.com/mojixcoder/kid/kid.go:156.85,158.2 1 1 -github.com/mojixcoder/kid/kid.go:163.88,165.2 1 1 -github.com/mojixcoder/kid/kid.go:170.88,172.2 1 1 -github.com/mojixcoder/kid/kid.go:177.86,179.2 1 1 -github.com/mojixcoder/kid/kid.go:184.84,186.2 1 1 -github.com/mojixcoder/kid/kid.go:191.73,193.2 1 1 -github.com/mojixcoder/kid/kid.go:199.102,201.2 1 1 -github.com/mojixcoder/kid/kid.go:206.81,208.2 1 1 -github.com/mojixcoder/kid/kid.go:213.91,219.2 3 1 -github.com/mojixcoder/kid/kid.go:222.65,232.24 6 1 -github.com/mojixcoder/kid/kid.go:232.24,234.3 1 1 -github.com/mojixcoder/kid/kid.go:234.8,234.39 1 1 -github.com/mojixcoder/kid/kid.go:234.39,236.3 1 1 -github.com/mojixcoder/kid/kid.go:236.8,239.3 2 1 -github.com/mojixcoder/kid/kid.go:241.2,243.29 2 1 -github.com/mojixcoder/kid/kid.go:243.29,245.3 1 1 -github.com/mojixcoder/kid/kid.go:247.2,247.15 1 1 -github.com/mojixcoder/kid/kid.go:251.105,252.45 1 1 -github.com/mojixcoder/kid/kid.go:252.45,254.3 1 1 -github.com/mojixcoder/kid/kid.go:255.2,255.16 1 1 -github.com/mojixcoder/kid/kid.go:259.28,261.2 1 1 -github.com/mojixcoder/kid/kid.go:264.79,268.2 3 1 -github.com/mojixcoder/kid/kid.go:271.44,272.27 1 1 -github.com/mojixcoder/kid/kid.go:272.27,276.3 2 1 -github.com/mojixcoder/kid/kid.go:280.50,288.2 5 1 -github.com/mojixcoder/kid/kid.go:291.69,292.15 1 1 -github.com/mojixcoder/kid/kid.go:292.15,294.3 1 1 -github.com/mojixcoder/kid/kid.go:298.33,299.21 1 1 -github.com/mojixcoder/kid/kid.go:299.21,301.3 1 1 -github.com/mojixcoder/kid/kid.go:302.2,302.15 1 1 -github.com/mojixcoder/kid/kid.go:306.61,307.25 1 1 -github.com/mojixcoder/kid/kid.go:307.25,308.24 1 1 -github.com/mojixcoder/kid/kid.go:308.24,310.4 1 1 -github.com/mojixcoder/kid/kid.go:311.3,311.24 1 1 -github.com/mojixcoder/kid/kid.go:313.2,313.21 1 1 -github.com/mojixcoder/kid/kid.go:317.40,318.14 1 1 -github.com/mojixcoder/kid/kid.go:318.14,319.17 1 1 -github.com/mojixcoder/kid/kid.go:322.2,322.34 1 1 -github.com/mojixcoder/kid/kid.go:323.109,324.33 1 1 -github.com/mojixcoder/kid/kid.go:324.33,325.18 1 1 -github.com/mojixcoder/kid/options.go:18.35,20.2 1 1 -github.com/mojixcoder/kid/options.go:23.35,24.33 1 1 -github.com/mojixcoder/kid/options.go:24.33,26.3 1 1 -github.com/mojixcoder/kid/options.go:30.66,33.33 2 1 -github.com/mojixcoder/kid/options.go:33.33,35.3 1 1 -github.com/mojixcoder/kid/options.go:39.65,42.33 2 1 -github.com/mojixcoder/kid/options.go:42.33,44.3 1 1 -github.com/mojixcoder/kid/options.go:48.66,51.33 2 1 -github.com/mojixcoder/kid/options.go:51.33,53.3 1 1 -github.com/mojixcoder/kid/options.go:57.54,60.33 2 1 -github.com/mojixcoder/kid/options.go:60.33,62.3 1 1 -github.com/mojixcoder/kid/options.go:66.62,69.33 2 1 -github.com/mojixcoder/kid/options.go:69.33,71.3 1 1 -github.com/mojixcoder/kid/response.go:43.56,49.2 2 1 -github.com/mojixcoder/kid/response.go:52.42,53.17 1 1 -github.com/mojixcoder/kid/response.go:53.17,55.3 1 1 -github.com/mojixcoder/kid/response.go:57.2,57.17 1 1 -github.com/mojixcoder/kid/response.go:62.37,63.17 1 1 -github.com/mojixcoder/kid/response.go:63.17,65.3 1 1 -github.com/mojixcoder/kid/response.go:67.2,68.40 2 1 -github.com/mojixcoder/kid/response.go:72.49,79.2 4 1 -github.com/mojixcoder/kid/response.go:82.31,84.2 1 1 -github.com/mojixcoder/kid/response.go:87.35,89.2 1 1 -github.com/mojixcoder/kid/response.go:92.33,94.2 1 1 -github.com/mojixcoder/kid/response.go:97.28,100.2 2 1 -github.com/mojixcoder/kid/response.go:103.66,106.2 2 1 -github.com/mojixcoder/kid/response.go:111.37,114.2 2 1 -github.com/mojixcoder/kid/static.go:21.57,23.2 1 1 -github.com/mojixcoder/kid/static.go:26.51,28.16 2 1 -github.com/mojixcoder/kid/static.go:28.16,30.3 1 1 -github.com/mojixcoder/kid/static.go:32.2,32.21 1 1 -github.com/mojixcoder/kid/static.go:36.69,45.2 5 1 -github.com/mojixcoder/kid/static.go:48.38,49.30 1 1 -github.com/mojixcoder/kid/static.go:49.30,51.3 1 1 -github.com/mojixcoder/kid/static.go:52.2,52.13 1 1 -github.com/mojixcoder/kid/tree.go:62.21,67.2 1 1 -github.com/mojixcoder/kid/tree.go:70.21,78.2 3 1 -github.com/mojixcoder/kid/tree.go:81.109,82.23 1 1 -github.com/mojixcoder/kid/tree.go:82.23,83.53 1 1 -github.com/mojixcoder/kid/tree.go:86.2,94.35 5 1 -github.com/mojixcoder/kid/tree.go:94.35,103.27 7 1 -github.com/mojixcoder/kid/tree.go:103.27,104.19 1 1 -github.com/mojixcoder/kid/tree.go:104.19,105.70 1 1 -github.com/mojixcoder/kid/tree.go:108.4,108.87 1 1 -github.com/mojixcoder/kid/tree.go:108.87,111.5 2 1 -github.com/mojixcoder/kid/tree.go:111.10,113.5 1 1 -github.com/mojixcoder/kid/tree.go:114.9,115.87 1 1 -github.com/mojixcoder/kid/tree.go:115.87,118.5 2 1 -github.com/mojixcoder/kid/tree.go:118.10,120.5 1 1 -github.com/mojixcoder/kid/tree.go:126.54,127.14 1 1 -github.com/mojixcoder/kid/tree.go:127.14,129.3 1 1 -github.com/mojixcoder/kid/tree.go:131.2,131.22 1 1 -github.com/mojixcoder/kid/tree.go:131.22,133.3 1 1 -github.com/mojixcoder/kid/tree.go:136.2,136.15 1 1 -github.com/mojixcoder/kid/tree.go:136.15,138.3 1 1 -github.com/mojixcoder/kid/tree.go:141.2,141.29 1 1 -github.com/mojixcoder/kid/tree.go:145.59,146.49 1 1 -github.com/mojixcoder/kid/tree.go:146.49,148.3 1 1 -github.com/mojixcoder/kid/tree.go:149.2,149.17 1 1 -github.com/mojixcoder/kid/tree.go:153.60,154.14 1 1 -github.com/mojixcoder/kid/tree.go:154.14,156.3 1 1 -github.com/mojixcoder/kid/tree.go:158.2,158.18 1 1 -github.com/mojixcoder/kid/tree.go:162.66,163.39 1 1 -github.com/mojixcoder/kid/tree.go:163.39,164.105 1 1 -github.com/mojixcoder/kid/tree.go:164.105,166.4 1 1 -github.com/mojixcoder/kid/tree.go:169.2,169.12 1 1 -github.com/mojixcoder/kid/tree.go:173.37,175.2 1 1 -github.com/mojixcoder/kid/tree.go:178.67,179.28 1 1 -github.com/mojixcoder/kid/tree.go:179.28,180.35 1 1 -github.com/mojixcoder/kid/tree.go:180.35,181.89 1 1 -github.com/mojixcoder/kid/tree.go:184.3,184.23 1 1 -github.com/mojixcoder/kid/tree.go:188.39,190.15 2 1 -github.com/mojixcoder/kid/tree.go:190.15,191.15 1 1 -github.com/mojixcoder/kid/tree.go:191.15,193.4 1 1 -github.com/mojixcoder/kid/tree.go:193.9,195.4 1 1 -github.com/mojixcoder/kid/tree.go:200.33,201.84 1 1 -github.com/mojixcoder/kid/tree.go:201.84,203.3 1 1 -github.com/mojixcoder/kid/tree.go:204.2,204.14 1 1 -github.com/mojixcoder/kid/tree.go:208.32,209.39 1 1 -github.com/mojixcoder/kid/tree.go:209.39,211.3 1 1 -github.com/mojixcoder/kid/tree.go:212.2,212.14 1 1 -github.com/mojixcoder/kid/tree.go:216.85,224.22 5 1 -github.com/mojixcoder/kid/tree.go:224.22,228.27 2 1 -github.com/mojixcoder/kid/tree.go:228.27,231.20 2 1 -github.com/mojixcoder/kid/tree.go:231.20,233.5 1 1 -github.com/mojixcoder/kid/tree.go:235.4,235.38 1 1 -github.com/mojixcoder/kid/tree.go:235.38,237.5 1 1 -github.com/mojixcoder/kid/tree.go:240.3,240.39 1 1 -github.com/mojixcoder/kid/tree.go:240.39,241.61 1 1 -github.com/mojixcoder/kid/tree.go:241.61,245.24 3 1 -github.com/mojixcoder/kid/tree.go:249.3,249.19 1 1 -github.com/mojixcoder/kid/tree.go:249.19,251.4 1 1 -github.com/mojixcoder/kid/tree.go:254.3,255.8 2 1 -github.com/mojixcoder/kid/tree.go:258.2,258.27 1 1 -github.com/mojixcoder/kid/tree.go:262.78,267.12 3 1 -github.com/mojixcoder/kid/tree.go:267.12,269.3 1 1 -github.com/mojixcoder/kid/tree.go:271.2,271.33 1 1 -github.com/mojixcoder/kid/tree.go:271.33,273.3 1 1 -github.com/mojixcoder/kid/tree.go:275.2,275.57 1 1 -github.com/mojixcoder/kid/tree.go:281.44,282.13 1 1 -github.com/mojixcoder/kid/tree.go:282.13,284.3 1 1 -github.com/mojixcoder/kid/tree.go:286.2,286.17 1 1 -github.com/mojixcoder/kid/tree.go:286.17,288.3 1 1 -github.com/mojixcoder/kid/tree.go:290.2,290.10 1 1 -github.com/mojixcoder/kid/tree.go:290.10,292.3 1 1 -github.com/mojixcoder/kid/tree.go:295.2,296.30 2 1 -github.com/mojixcoder/kid/tree.go:296.30,297.45 1 1 -github.com/mojixcoder/kid/tree.go:297.45,298.12 1 1 -github.com/mojixcoder/kid/tree.go:300.3,300.23 1 1 -github.com/mojixcoder/kid/tree.go:303.2,303.22 1 1 -github.com/mojixcoder/kid/utils.go:8.54,9.26 1 1 -github.com/mojixcoder/kid/utils.go:9.26,11.3 1 1 -github.com/mojixcoder/kid/utils.go:15.46,16.26 1 1 -github.com/mojixcoder/kid/utils.go:16.26,18.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:74.35,76.2 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:79.59,87.26 7 1 -github.com/mojixcoder/kid/middlewares/cors.go:87.26,89.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:91.2,91.52 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:91.52,92.31 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:92.31,100.20 6 1 -github.com/mojixcoder/kid/middlewares/cors.go:100.20,103.5 2 1 -github.com/mojixcoder/kid/middlewares/cors.go:105.4,105.39 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:105.39,108.5 2 1 -github.com/mojixcoder/kid/middlewares/cors.go:110.4,110.52 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:110.52,112.5 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:112.10,114.5 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:116.4,116.101 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:116.101,118.5 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:120.4,123.21 3 1 -github.com/mojixcoder/kid/middlewares/cors.go:124.15,125.12 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:126.14,131.38 4 1 -github.com/mojixcoder/kid/middlewares/cors.go:138.42,140.2 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:143.77,144.33 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:144.33,146.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:148.2,148.26 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:148.26,150.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:152.2,152.40 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:152.40,153.15 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:153.15,156.4 2 1 -github.com/mojixcoder/kid/middlewares/cors.go:157.3,157.18 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:157.18,159.4 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:162.2,162.14 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:166.67,167.25 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:167.25,169.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:173.39,174.34 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:174.34,176.3 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:178.2,178.34 1 1 -github.com/mojixcoder/kid/middlewares/cors.go:178.34,180.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:74.37,76.2 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:79.63,88.52 6 1 -github.com/mojixcoder/kid/middlewares/logger.go:88.52,89.31 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:89.31,91.44 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:91.44,94.5 2 1 -github.com/mojixcoder/kid/middlewares/logger.go:96.4,115.20 7 1 -github.com/mojixcoder/kid/middlewares/logger.go:115.20,117.5 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:117.10,117.28 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:117.28,119.5 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:119.10,121.5 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:127.50,128.23 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:128.23,130.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:132.2,132.18 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:133.16,134.88 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:135.16,136.88 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:137.10,138.31 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:143.43,144.20 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:144.20,146.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:148.2,148.22 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:148.22,150.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:152.2,152.29 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:152.29,154.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:156.2,156.33 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:156.33,158.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:160.2,160.33 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:160.33,162.3 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:164.2,164.20 1 1 -github.com/mojixcoder/kid/middlewares/logger.go:164.20,166.3 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:32.44,34.3 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:38.39,40.2 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:43.67,44.52 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:44.52,45.31 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:45.31,46.17 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:46.17,47.37 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:47.37,48.19 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:48.19,49.26 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:49.26,51.8 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:53.7,53.30 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:53.30,56.8 2 1 -github.com/mojixcoder/kid/middlewares/recovery.go:59.6,59.31 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:59.31,61.7 1 1 -github.com/mojixcoder/kid/middlewares/recovery.go:65.4,65.11 1 1 From cb6b85e824bfdd2f98217c2aa8048b7f4fb3f33d Mon Sep 17 00:00:00 2001 From: Mojtaba Arezoomand Date: Sat, 21 Oct 2023 22:56:07 +0330 Subject: [PATCH 6/6] fix: remove get path method since it was replaced by c.Path() method --- kid.go | 11 +---------- kid_test.go | 15 --------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/kid.go b/kid.go index 89e5a07..b35de30 100644 --- a/kid.go +++ b/kid.go @@ -5,7 +5,6 @@ import ( "fmt" "io" "net/http" - "net/url" "os" "reflect" "runtime" @@ -223,7 +222,7 @@ func (k *Kid) ServeHTTP(w http.ResponseWriter, r *http.Request) { c := k.pool.Get().(*Context) c.reset(r, w) - route, params, err := k.router.search(getPath(r.URL), r.Method) + route, params, err := k.router.search(c.Path(), r.Method) c.setParams(params) @@ -294,14 +293,6 @@ func (k *Kid) printDebug(w io.Writer, format string, values ...any) { } } -// getPath returns request's path. -func getPath(u *url.URL) string { - if u.RawPath != "" { - return u.RawPath - } - return u.Path -} - // resolveAddress returns the address which server will run on. func resolveAddress(addresses []string, goos string) string { if len(addresses) == 0 { diff --git a/kid_test.go b/kid_test.go index 7987a0e..714f4a6 100644 --- a/kid_test.go +++ b/kid_test.go @@ -8,7 +8,6 @@ import ( "io" "net/http" "net/http/httptest" - "net/url" "testing" "time" @@ -622,20 +621,6 @@ func TestResolveAddress(t *testing.T) { assert.Equal(t, ":2377", addr) } -func TestGetPath(t *testing.T) { - u, err := url.Parse("http://localhost/foo%25fbar") - assert.NoError(t, err) - - assert.Empty(t, u.RawPath) - assert.Equal(t, u.Path, getPath(u)) - - u, err = url.Parse("http://localhost/foo%fbar") - assert.NoError(t, err) - - assert.NotEmpty(t, u.RawPath) - assert.Equal(t, u.RawPath, getPath(u)) -} - func TestApplyOptions(t *testing.T) { k := New()