mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 06:57:35 +08:00
redesign the default request id generator, replace random number to client port
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -16,6 +17,9 @@ const responseErrorFieldKey = "RESPONSE_ERROR"
|
||||
// AcceptLanguageHeaderName represents the header name of accept language
|
||||
const AcceptLanguageHeaderName = "Accept-Language"
|
||||
|
||||
// RemoteClientPortHeader represents the header name of remote client source port
|
||||
const RemoteClientPortHeader = "X-Real-Port"
|
||||
|
||||
// ClientTimezoneOffsetHeaderName represents the header name of client timezone offset
|
||||
const ClientTimezoneOffsetHeaderName = "X-Timezone-Offset"
|
||||
|
||||
@@ -25,6 +29,36 @@ type Context struct {
|
||||
// DO NOT ADD ANY FIELD IN THIS CONTEXT, THIS CONTEXT IS JUST A WRAPPER
|
||||
}
|
||||
|
||||
func (c *Context) ClientPort() uint16 {
|
||||
remotePort := c.GetHeader(RemoteClientPortHeader)
|
||||
|
||||
if remotePort != "" {
|
||||
remotePortNum, err := strconv.ParseInt(remotePort, 10, 32)
|
||||
|
||||
if err == nil {
|
||||
return uint16(remotePortNum)
|
||||
}
|
||||
}
|
||||
|
||||
if c.Request == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
_, remotePort, err := net.SplitHostPort(c.Request.RemoteAddr)
|
||||
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
remotePortNum, err := strconv.ParseInt(remotePort, 10, 32)
|
||||
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
return uint16(remotePortNum)
|
||||
}
|
||||
|
||||
// SetRequestId sets the given request id to context
|
||||
func (c *Context) SetRequestId(requestId string) {
|
||||
c.Set(requestIdFieldKey, requestId)
|
||||
|
||||
Reference in New Issue
Block a user