Skip to content

Commit

Permalink
refactor: adjust error handle
Browse files Browse the repository at this point in the history
vicanso committed Jun 3, 2021
1 parent 94a34fb commit 5b43293
Showing 3 changed files with 26 additions and 26 deletions.
18 changes: 9 additions & 9 deletions context.go
Original file line number Diff line number Diff line change
@@ -155,10 +155,9 @@ func GetRealIP(req *http.Request) string {
// if not exists then it will get ip from x-real-ip from request header,
// if not exists then it will use remote addr.
func (c *Context) RealIP() string {
if c.realIP != "" {
return c.realIP
if c.realIP == "" {
c.realIP = GetRealIP(c.Request)
}
c.realIP = GetRealIP(c.Request)
return c.realIP
}

@@ -183,11 +182,10 @@ func GetClientIP(req *http.Request) string {
return strings.TrimSpace(arr[0])
}
}
// x-real-ip为前置设置,如果有,则直接认为是客户IP
ip = h.Get(HeaderXRealIP)
if ip != "" {
if !intranetip.Is(net.ParseIP(ip)) {
return ip
}
return ip
}
return GetRemoteAddr(req)
}
@@ -197,10 +195,9 @@ func GetClientIP(req *http.Request) string {
// if not exists then it will get ip from x-real-ip from request header,
// if not exists then it will use remote addr.
func (c *Context) ClientIP() string {
if c.clientIP != "" {
return c.clientIP
if c.clientIP == "" {
c.clientIP = GetClientIP(c.Request)
}
c.clientIP = GetClientIP(c.Request)
return c.clientIP
}

@@ -467,6 +464,7 @@ func (c *Context) GetSignedCookie(name string) (cookie *http.Cookie, index int,
}

sc, err := c.Cookie(name + SignedCookieSuffix)
// 如果获取失败,则获取不到cookie
if err != nil {
cookie = nil
return
@@ -482,6 +480,7 @@ func (c *Context) SignedCookie(name string) (cookie *http.Cookie, err error) {
if err != nil {
return
}
// 如果校验失败,返回无cookie的错误
if index < 0 {
cookie = nil
err = http.ErrNoCookie
@@ -505,6 +504,7 @@ func (c *Context) SendFile(file string) (err error) {
c.SetHeader(HeaderLastModified, lmd)
}
}
// elton对于实现了closer的会自动调用关闭
r, err := os.Open(file)
if err != nil {
return
3 changes: 1 addition & 2 deletions context_test.go
Original file line number Diff line number Diff line change
@@ -192,12 +192,11 @@ func TestGetClientIP(t *testing.T) {
},
ip: "1.1.1.1",
},
// x-real-ip is local ip, so get by remote addr
// get by remote addr
{
newContext: func() *Context {
req := httptest.NewRequest("GET", "/", nil)
req.RemoteAddr = "192.168.1.1:7000"
req.Header.Set(HeaderXRealIP, "192.168.0.1")
c := NewContext(nil, req)
return c
},
31 changes: 16 additions & 15 deletions elton.go
Original file line number Diff line number Diff line change
@@ -382,24 +382,25 @@ func (e *Elton) Handle(method, path string, handlerList ...Handler) *Elton {
return
}
c.Committed = true
// 如果出错则触发出错处理,返回
if err != nil {
e.error(c, err)
} else {
if c.StatusCode != 0 {
c.Response.WriteHeader(c.StatusCode)
return
}
if c.StatusCode != 0 {
c.Response.WriteHeader(c.StatusCode)
}
if c.BodyBuffer != nil {
c.SetHeader(HeaderContentLength, strconv.Itoa(c.BodyBuffer.Len()))
_, responseErr := c.Response.Write(c.BodyBuffer.Bytes())
if responseErr != nil {
e.EmitError(c, responseErr)
}
if c.BodyBuffer != nil {
c.SetHeader(HeaderContentLength, strconv.Itoa(c.BodyBuffer.Len()))
_, responseErr := c.Response.Write(c.BodyBuffer.Bytes())
if responseErr != nil {
e.EmitError(c, responseErr)
}
} else if c.IsReaderBody() {
r, _ := c.Body.(io.Reader)
_, pipeErr := c.Pipe(r)
if pipeErr != nil {
e.EmitError(c, pipeErr)
}
} else if c.IsReaderBody() {
r, _ := c.Body.(io.Reader)
_, pipeErr := c.Pipe(r)
if pipeErr != nil {
e.EmitError(c, pipeErr)
}
}
})

0 comments on commit 5b43293

Please sign in to comment.