本文整理汇总了Golang中github.com/lxc/lxd/shared.DebugJson函数的典型用法代码示例。如果您正苦于以下问题:Golang DebugJson函数的具体用法?Golang DebugJson怎么用?Golang DebugJson使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DebugJson函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Render
func (r *errorResponse) Render(w http.ResponseWriter) error {
var output io.Writer
buf := &bytes.Buffer{}
output = buf
var captured *bytes.Buffer
if debug {
captured = &bytes.Buffer{}
output = io.MultiWriter(buf, captured)
}
err := json.NewEncoder(output).Encode(shared.Jmap{"type": lxd.Error, "error": r.msg, "error_code": r.code})
if err != nil {
return err
}
if debug {
shared.DebugJson(captured)
}
w.Header().Set("Content-Type", "application/json")
w.Header().Set("X-Content-Type-Options", "nosniff")
w.WriteHeader(r.code)
fmt.Fprintln(w, buf.String())
return nil
}
开发者ID:vahe,项目名称:lxd,代码行数:28,代码来源:response.go
示例2: WriteJSON
func WriteJSON(w http.ResponseWriter, body interface{}) error {
var output io.Writer
var captured *bytes.Buffer
output = w
if *debug {
captured = &bytes.Buffer{}
output = io.MultiWriter(w, captured)
}
err := json.NewEncoder(output).Encode(body)
if captured != nil {
shared.DebugJson(captured)
}
return err
}
开发者ID:rrva,项目名称:lxd,代码行数:18,代码来源:response.go
示例3: Render
func (r *ErrorResponse) Render(w http.ResponseWriter) error {
var output io.Writer
buf := &bytes.Buffer{}
output = buf
var captured *bytes.Buffer
if *debug {
captured = &bytes.Buffer{}
output = io.MultiWriter(buf, captured)
}
err := json.NewEncoder(output).Encode(shared.Jmap{"type": lxd.Error, "error": r.msg, "error_code": r.code})
if err != nil {
return err
}
if *debug {
shared.DebugJson(captured)
}
http.Error(w, buf.String(), r.code)
return nil
}
开发者ID:rrva,项目名称:lxd,代码行数:23,代码来源:response.go
示例4: createCmd
func (d *Daemon) createCmd(version string, c Command) {
var uri string
if c.name == "" {
uri = fmt.Sprintf("/%s", version)
} else {
uri = fmt.Sprintf("/%s/%s", version, c.name)
}
d.mux.HandleFunc(uri, func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if d.isTrustedClient(r) {
shared.Log.Info(
"handling",
log.Ctx{"method": r.Method, "url": r.URL.RequestURI(), "ip": r.RemoteAddr})
} else if r.Method == "GET" && c.untrustedGet {
shared.Log.Info(
"allowing untrusted GET",
log.Ctx{"url": r.URL.RequestURI(), "ip": r.RemoteAddr})
} else if r.Method == "POST" && c.untrustedPost {
shared.Log.Info(
"allowing untrusted POST",
log.Ctx{"url": r.URL.RequestURI(), "ip": r.RemoteAddr})
} else {
shared.Log.Warn(
"rejecting request from untrusted client",
log.Ctx{"ip": r.RemoteAddr})
Forbidden.Render(w)
return
}
if debug && r.Method != "GET" && isJSONRequest(r) {
newBody := &bytes.Buffer{}
captured := &bytes.Buffer{}
multiW := io.MultiWriter(newBody, captured)
if _, err := io.Copy(multiW, r.Body); err != nil {
InternalError(err).Render(w)
return
}
r.Body = shared.BytesReadCloser{Buf: newBody}
shared.DebugJson(captured)
}
var resp Response
resp = NotImplemented
switch r.Method {
case "GET":
if c.get != nil {
resp = c.get(d, r)
}
case "PUT":
if c.put != nil {
resp = c.put(d, r)
}
case "POST":
if c.post != nil {
resp = c.post(d, r)
}
case "DELETE":
if c.delete != nil {
resp = c.delete(d, r)
}
default:
resp = NotFound
}
if err := resp.Render(w); err != nil {
err := InternalError(err).Render(w)
if err != nil {
shared.Log.Error("Failed writing error for error, giving up")
}
}
/*
* When we create a new lxc.Container, it adds a finalizer (via
* SetFinalizer) that frees the struct. However, it sometimes
* takes the go GC a while to actually free the struct,
* presumably since it is a small amount of memory.
* Unfortunately, the struct also keeps the log fd open, so if
* we leave too many of these around, we end up running out of
* fds. So, let's explicitly do a GC to collect these at the
* end of each request.
*/
runtime.GC()
})
}
开发者ID:mickydelfavero,项目名称:lxd,代码行数:88,代码来源:daemon.go
注:本文中的github.com/lxc/lxd/shared.DebugJson函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论