本文整理汇总了Golang中github.com/pilu/traffic.ResponseWriter.SetVar方法的典型用法代码示例。如果您正苦于以下问题:Golang ResponseWriter.SetVar方法的具体用法?Golang ResponseWriter.SetVar怎么用?Golang ResponseWriter.SetVar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/pilu/traffic.ResponseWriter
的用法示例。
在下文中一共展示了ResponseWriter.SetVar方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: GenerateImageCache
func GenerateImageCache(w traffic.ResponseWriter, r *traffic.Request) {
if !exists(cache_folder) {
if err := os.Mkdir(cache_folder, 0644); err != nil {
panic(err)
}
}
filename := fmt.Sprintf("%s/%dx%d.jpg", cache_folder, w.GetVar("width"), w.GetVar("height"))
w.SetVar("filename", filename)
if !exists(filename) {
// file does not exists, generate a cached version
width := w.GetVar("width").(int)
height := w.GetVar("height").(int)
src_image := loadImageFromFile(image_file)
pattern := resizeImage(src_image, width, height)
var dst_image image.Image
if width > height {
dst_image = tileImageHorizontally(pattern, width, height)
} else {
dst_image = tileImageVertically(pattern, width, height)
}
saveImageToFile(filename, dst_image)
}
}
示例2: RequireValidImageParameters
func RequireValidImageParameters(w traffic.ResponseWriter, r *traffic.Request) {
width, err := strconv.Atoi(r.Param("width"))
if err != nil {
w.WriteHeader(http.StatusNotFound)
return
}
height, err := strconv.Atoi(r.Param("height"))
if err != nil {
height = width
}
if (width <= 2560 && width > 0) && (height <= 2560 && height > 0) {
w.SetVar("width", width)
w.SetVar("height", height)
// log latest greatest creation
if err := ioutil.WriteFile(filepath.Join(cache_folder, "/latest"), []byte(fmt.Sprintf("%d/%d", width, height)), 0644); err != nil {
// panic is trapped by Traffic and show us a nice stack trace in the browser
// a proper error handling should be provided, but in this simple example
// it's used to remind you to always check for errors
panic(err)
}
} else {
// bad request
w.WriteHeader(http.StatusBadRequest)
w.Render("400")
}
}
示例3: ServeHTTP
// If the request path is "/ping", it writes PONG in the response and returns without calling the next middleware
// Otherwise it sets the variable "PING" with PONG as value and calls the next middleware.
// The next middleware and the final handler can get that variable with:
// w.GetVar("ping")
func (c *PingMiddleware) ServeHTTP(w traffic.ResponseWriter, r *traffic.Request, next traffic.NextMiddlewareFunc) {
if r.URL.Path == "/ping" {
w.WriteText("pong\n")
return
}
if nextMiddleware := next(); nextMiddleware != nil {
w.SetVar("ping", "pong")
nextMiddleware.ServeHTTP(w, r, next)
}
return
}
示例4: ServeHTTP
func (c *Middleware) ServeHTTP(w traffic.ResponseWriter, r *traffic.Request, next traffic.NextMiddlewareFunc) {
ok := miniprofiler.Enable(r.Request)
if ok && strings.HasPrefix(r.Request.URL.Path, miniprofiler.PATH) {
miniprofiler.MiniProfilerHandler(w, r.Request)
return
}
p := miniprofiler.NewProfile(w, r.Request, r.URL.Path)
w.SetVar("miniprofiler", p.Includes())
w.SetVar("miniprofiler_timer", p)
if nextMiddleware := next(); nextMiddleware != nil {
nextMiddleware.ServeHTTP(w, r, next)
}
if ok {
p.Finalize()
}
return
}
示例5: ServeHTTP
func (middleware *trafficCompositeMiddleware) ServeHTTP(w traffic.ResponseWriter, r *traffic.Request, next traffic.NextMiddlewareFunc) {
if nextMiddleware := next(); nextMiddleware != nil {
w.SetVar("field", r.URL.Path)
nextMiddleware.ServeHTTP(w, r, next)
}
}