From afba0c1f897a111468fbf45c20082510293f27c3 Mon Sep 17 00:00:00 2001 From: cssivision Date: Thu, 22 Mar 2018 21:25:27 +0800 Subject: [PATCH] response method add status code param --- bind_test.go | 21 ++++-------- context.go | 9 +++-- context_test.go | 77 +++++++++++++++---------------------------- looli.go | 6 ++-- looli_test.go | 18 ++++------ router_prefix_test.go | 30 +++++++---------- 6 files changed, 61 insertions(+), 100 deletions(-) diff --git a/bind_test.go b/bind_test.go index 2d9a9c3..92ae8ed 100644 --- a/bind_test.go +++ b/bind_test.go @@ -45,8 +45,7 @@ func TestBindJSON(t *testing.T) { assert.Empty(t, form.Other) assert.Equal(t, "aaa", form.Payload.A) assert.Equal(t, 222, form.Payload.B) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -104,8 +103,7 @@ func TestBindXML(t *testing.T) { assert.Equal(t, "cssivision", form.Name) assert.Equal(t, 21, form.Age) assert.Empty(t, form.Other) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -159,8 +157,7 @@ func TestBindForm(t *testing.T) { assert.Equal(t, "cssivision", *form.Name) assert.Equal(t, 21, *form.Age) assert.Empty(t, form.Other) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -193,8 +190,7 @@ func TestBindForm(t *testing.T) { assert.Equal(t, "cssivision", *form.Name) assert.Equal(t, 21, *form.Age) assert.Empty(t, form.Other) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -242,8 +238,7 @@ func TestBindPostForm(t *testing.T) { assert.Equal(t, "cssivision", form.Name) assert.Equal(t, 21, form.Age) assert.Empty(t, form.Other) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -297,8 +292,7 @@ func TestBindMultiPart(t *testing.T) { assert.Equal(t, "cssivision", form.Name) assert.Equal(t, 21, form.Age) assert.Empty(t, form.Other) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -378,8 +372,7 @@ func TestMutliDataType(t *testing.T) { assert.Equal(t, 21, form.SubInfo.SubAge) assert.NotNil(t, form.Time) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) diff --git a/context.go b/context.go index 2725921..d834adf 100644 --- a/context.go +++ b/context.go @@ -282,20 +282,23 @@ func (c *Context) Error(err error) { } // String write format string to response -func (c *Context) String(format string, values ...interface{}) { +func (c *Context) String(code int, format string, values ...interface{}) { + c.Status(code) if err := renderString(c.ResponseWriter, format, values...); err != nil { panic(err) } } // JSON write obj to response -func (c *Context) JSON(data interface{}) { +func (c *Context) JSON(code int, data interface{}) { + c.Status(code) if err := renderJSON(c.ResponseWriter, data); err != nil { panic(err) } } -func (c *Context) HTML(name string, data interface{}) { +func (c *Context) HTML(code int, name string, data interface{}) { + c.Status(code) if err := renderHTML(c.ResponseWriter, c.template, name, data); err != nil { panic(err) } diff --git a/context_test.go b/context_test.go index 9b29d4b..66f58ba 100644 --- a/context_test.go +++ b/context_test.go @@ -4,13 +4,14 @@ import ( "bytes" "encoding/json" "errors" - "github.com/stretchr/testify/assert" "io/ioutil" "mime/multipart" "net/http" "net/http/httptest" "strings" "testing" + + "github.com/stretchr/testify/assert" ) func TestQuery(t *testing.T) { @@ -23,8 +24,7 @@ func TestQuery(t *testing.T) { assert.Equal(t, c.Query("age"), "23") assert.Equal(t, c.Query("bar"), "イモト") assert.Empty(t, c.Query("other")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -52,8 +52,7 @@ func TestDefaultQuery(t *testing.T) { assert.Equal(t, c.DefaultQuery("name", "biz"), "cssivision") assert.Equal(t, c.DefaultQuery("age", "24"), "23") assert.Equal(t, c.DefaultQuery("other", "other value"), "other value") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -81,8 +80,7 @@ func TestPostForm(t *testing.T) { assert.Equal(t, c.PostForm("page"), "11") assert.Empty(t, c.PostForm("both")) assert.Empty(t, c.PostForm("other")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -112,8 +110,7 @@ func TestDefaultPostForm(t *testing.T) { assert.Equal(t, c.DefaultPostForm("page", "12"), "11") assert.Equal(t, c.DefaultPostForm("both", "other"), "other") assert.Empty(t, c.DefaultPostForm("other", "")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -153,8 +150,7 @@ func TestPostFormMultipart(t *testing.T) { assert.Equal(t, c.PostForm("foo"), "bar") assert.Equal(t, c.PostForm("array"), "first") assert.Equal(t, c.PostForm("id"), "12") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -191,8 +187,7 @@ func TestStatus(t *testing.T) { serverResponse := "server response" router := New() router.Get("/", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -217,8 +212,7 @@ func TestRedirect(t *testing.T) { serverResponse := "server response" router := New() router.Get("/redirect", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) router.Get("/", func(c *Context) { c.Redirect("/redirect") @@ -272,8 +266,7 @@ func TestHeader(t *testing.T) { router := New() router.Get("/a/b", func(c *Context) { assert.Equal(t, c.Header("fake-header"), "fake") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -305,8 +298,7 @@ func TestSetHeader(t *testing.T) { router := New() router.Get("/a/b", func(c *Context) { c.SetHeader("fake-header", "fake") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -329,8 +321,7 @@ func TestSetHeader(t *testing.T) { router := New() router.Get("/a/b", func(c *Context) { c.SetHeader("fake-header", "") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -359,8 +350,7 @@ func TestCookie(t *testing.T) { val, err = c.Cookie("fake-cookie-not-exist") assert.NotNil(t, err) assert.Empty(t, val) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -398,8 +388,7 @@ func TestSetCookie(t *testing.T) { Name: "fake-cookie", Value: "fake", }) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -433,8 +422,7 @@ func TestAbort(t *testing.T) { c.Abort() assert.True(t, c.IsAborted()) assert.Equal(t, c.current, abortIndex) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) } middleware3 := func(c *Context) { @@ -478,7 +466,7 @@ func TestAbortWithStatus(t *testing.T) { assert.Equal(t, c.current, abortIndex) } middleware2 := func(c *Context) { - c.String(serverResponse) + c.String(http.StatusOK, serverResponse) } router := New() @@ -515,8 +503,7 @@ func TestError(t *testing.T) { assert.Equal(t, c.Err.Code, 0) assert.Equal(t, c.Err.Meta, nil) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -548,8 +535,7 @@ func TestError(t *testing.T) { assert.Equal(t, c.Err.Code, 501) assert.Equal(t, c.Err.Meta, "cssivision") - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -573,14 +559,12 @@ func TestParam(t *testing.T) { router.Get("/a/:name", func(c *Context) { assert.Equal(t, "cssivision", c.Param("name")) assert.Empty(t, c.Param("other")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) router.Get("/b/*filepath", func(c *Context) { assert.Equal(t, "c/cssivision", c.Param("filepath")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -622,8 +606,7 @@ func TestClientIP(t *testing.T) { router.Get("/a", func(c *Context) { assert.Equal(t, realIP, c.ClientIP()) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -653,8 +636,7 @@ func TestClientIP(t *testing.T) { router.Get("/a", func(c *Context) { assert.Equal(t, "looli.xyz", c.ClientIP()) assert.Empty(t, c.Header("X-Real-Ip")) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -681,8 +663,7 @@ func TestContentType(t *testing.T) { router := New() router.Post("/a/b", func(c *Context) { assert.Equal(t, "text/plain", c.ContentType()) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -713,8 +694,7 @@ func TestString(t *testing.T) { serverResponse := "server response" router := New() router.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -743,8 +723,7 @@ func TestJSON(t *testing.T) { statusCode := 404 router := New() router.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.JSON(JSON{ + c.JSON(statusCode, JSON{ "name": "cssivision", "age": 21, }) @@ -773,8 +752,7 @@ func TestHTML(t *testing.T) { router := New() router.LoadHTMLGlob("test/templates/*") router.Get("/index.html", func(c *Context) { - c.Status(statusCode) - c.HTML("index.tmpl", JSON{ + c.HTML(statusCode, "index.tmpl", JSON{ "title": "Posts", }) }) @@ -797,9 +775,8 @@ func TestHTML(t *testing.T) { router := New() router.LoadHTMLGlob("test/templates/*") router.Get("/index.html", func(c *Context) { - c.Status(statusCode) assert.Panics(t, func() { - c.HTML("index.tmp", JSON{ + c.HTML(statusCode, "index.tmp", JSON{ "title": "Posts", }) }) diff --git a/looli.go b/looli.go index 3729aa5..3a84ad1 100644 --- a/looli.go +++ b/looli.go @@ -44,14 +44,12 @@ func New() *Engine { // noRoute use as a default handler for router not matched func noRoute(c *Context) { - c.Status(http.StatusNotFound) - c.String(default404Body) + c.String(http.StatusNotFound, default404Body) } // noMethod use as a default handler for Method not allowed func noMethod(c *Context) { - c.Status(http.StatusMethodNotAllowed) - c.String(default405Body) + c.String(http.StatusMethodNotAllowed, default405Body) } // Default return engine instance, add logger, recover handler to it. diff --git a/looli_test.go b/looli_test.go index dfdfa80..8cbef24 100644 --- a/looli_test.go +++ b/looli_test.go @@ -1,11 +1,12 @@ package looli import ( - "github.com/stretchr/testify/assert" "io/ioutil" "net/http" "net/http/httptest" "testing" + + "github.com/stretchr/testify/assert" ) func TestNewEngine(t *testing.T) { @@ -68,8 +69,7 @@ func TestSetIgnoreCase(t *testing.T) { router.SetIgnoreCase(false) assert.False(t, router.router.IgnoreCase) router.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -101,8 +101,7 @@ func TestSetTrailingSlashRedirect(t *testing.T) { statusCode := 200 statusNotFound := 404 router.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -132,8 +131,7 @@ func TestSetTrailingSlashRedirect(t *testing.T) { statusCode := 200 statusNotFound := 404 router.Get("/a/b/", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -173,8 +171,7 @@ func TestNoMethod(t *testing.T) { }) router.NoMethod(func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -227,8 +224,7 @@ func TestNoRoute(t *testing.T) { }) router.NoRoute(func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) router.Get("/a/b", func(c *Context) {}) diff --git a/router_prefix_test.go b/router_prefix_test.go index d09ed1c..8b6e2b3 100644 --- a/router_prefix_test.go +++ b/router_prefix_test.go @@ -2,12 +2,13 @@ package looli import ( "bytes" - "github.com/stretchr/testify/assert" "io/ioutil" "net/http" "net/http/httptest" "strings" "testing" + + "github.com/stretchr/testify/assert" ) func TestMethod(t *testing.T) { @@ -57,8 +58,7 @@ func handlePostPutMethod(method string, t *testing.T) { assert.Nil(t, err) assert.Equal(t, requestData, requestBody) - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -104,8 +104,7 @@ func handleMethod(method string, t *testing.T) { statusCode := 404 router := New() router.Handle(method, "/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -246,8 +245,7 @@ func TestPrefix(t *testing.T) { assert.NotNil(t, v1.router) assert.Equal(t, v1.basePath, "/v1") v1.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -278,8 +276,7 @@ func TestPrefixUse(t *testing.T) { }) router.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) v1 := router.Prefix("/v1") @@ -288,8 +285,7 @@ func TestPrefixUse(t *testing.T) { }) v1.Get("/a/b", func(c *Context) { - c.Status(statusCode) - c.String(serverResponse) + c.String(statusCode, serverResponse) }) server := httptest.NewServer(router) @@ -341,7 +337,7 @@ func TestPrefixUse(t *testing.T) { middleware2 := func(c *Context) { c.SetHeader("response-fake-header", "fake") c.Next() - c.String(serverResponse) + c.String(http.StatusOK, serverResponse) } router := New() v1 := router.Prefix("/v1") @@ -380,8 +376,7 @@ func TestLoadHTMLGlob(t *testing.T) { router := New() router.LoadHTMLGlob("test/templates/*") router.Get("/index.html", func(c *Context) { - c.Status(statusCode) - c.HTML("index.tmpl", JSON{ + c.HTML(statusCode, "index.tmpl", JSON{ "title": "Posts", }) }) @@ -409,8 +404,7 @@ func TestLoadHTMLFiles(t *testing.T) { router := New() router.LoadHTMLFiles("test/templates/index.tmpl") router.Get("/index.html", func(c *Context) { - c.Status(statusCode) - c.HTML("index.tmpl", JSON{ + c.HTML(statusCode, "index.tmpl", JSON{ "title": "Posts", }) }) @@ -445,7 +439,7 @@ func TestUse(t *testing.T) { middleware2 := func(c *Context) { c.SetHeader("response-fake-header", "fake") c.Next() - c.String(serverResponse) + c.String(http.StatusOK, serverResponse) } router := New() router.Use(middleware1, middleware2) @@ -509,7 +503,7 @@ func TestUseHandler(t *testing.T) { HandlerFunc: func(c *Context) { c.SetHeader("response-fake-header", "fake") c.Next() - c.String(serverResponse) + c.String(http.StatusOK, serverResponse) }, }