本文整理匯總了Golang中github.com/yarf-framework/yarf.Context.GetClientIP方法的典型用法代碼示例。如果您正苦於以下問題:Golang Context.GetClientIP方法的具體用法?Golang Context.GetClientIP怎麽用?Golang Context.GetClientIP使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/yarf-framework/yarf.Context
的用法示例。
在下文中一共展示了Context.GetClientIP方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: End
func (l *Logger) End(c *yarf.Context) error {
// If nobody sets the status code, it's a 200
var code int
if _, ok := c.Response.(*LoggerWriter); ok {
code = c.Response.(*LoggerWriter).StatusCode
}
if code == 0 {
code = 200
}
log.Printf(
"| %s | %s | %d | %s",
c.GetClientIP(),
c.Request.Method,
code,
c.Request.URL.String(),
)
return nil
}
示例2: PreDispatch
// PreDispatch performs the requests counting and handle blocks/
func (m *RateLimiter) PreDispatch(c *yarf.Context) error {
// IP as key
key := c.GetClientIP()
// Count
err := m.rl.Count(key)
if err != nil {
if _, ok := err.(RateLimitError); ok {
return &YarfError{}
}
return err
}
// Set rate limit info on headers
rate := m.rl.Get(key)
c.Response.Header().Set("X-RateLimit-Limit", strconv.Itoa(int(rate.Limit)))
c.Response.Header().Set("X-RateLimit-Remaining", strconv.Itoa(int(rate.Limit-rate.EventCount)))
c.Response.Header().Set("X-RateLimit-Reset", strconv.Itoa(int(rate.Start.Add(time.Second*time.Duration(rate.Window)).Unix())))
return nil
}