Merge v1.2.1-master
Signed-off-by: Emile Vauge <emile@vauge.com>
This commit is contained in:
parent
a590155b0b
commit
aeb17182b4
396 changed files with 27271 additions and 9969 deletions
57
vendor/github.com/unrolled/render/engine.go
generated
vendored
57
vendor/github.com/unrolled/render/engine.go
generated
vendored
|
@ -5,12 +5,13 @@ import (
|
|||
"encoding/json"
|
||||
"encoding/xml"
|
||||
"html/template"
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// Engine is the generic interface for all responses.
|
||||
type Engine interface {
|
||||
Render(http.ResponseWriter, interface{}) error
|
||||
Render(io.Writer, interface{}) error
|
||||
}
|
||||
|
||||
// Head defines the basic ContentType and Status fields.
|
||||
|
@ -66,19 +67,21 @@ func (h Head) Write(w http.ResponseWriter) {
|
|||
}
|
||||
|
||||
// Render a data response.
|
||||
func (d Data) Render(w http.ResponseWriter, v interface{}) error {
|
||||
c := w.Header().Get(ContentType)
|
||||
if c != "" {
|
||||
d.Head.ContentType = c
|
||||
func (d Data) Render(w io.Writer, v interface{}) error {
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
c := hw.Header().Get(ContentType)
|
||||
if c != "" {
|
||||
d.Head.ContentType = c
|
||||
}
|
||||
d.Head.Write(hw)
|
||||
}
|
||||
|
||||
d.Head.Write(w)
|
||||
w.Write(v.([]byte))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Render a HTML response.
|
||||
func (h HTML) Render(w http.ResponseWriter, binding interface{}) error {
|
||||
func (h HTML) Render(w io.Writer, binding interface{}) error {
|
||||
// Retrieve a buffer from the pool to write to.
|
||||
out := bufPool.Get()
|
||||
err := h.Templates.ExecuteTemplate(out, h.Name, binding)
|
||||
|
@ -86,7 +89,9 @@ func (h HTML) Render(w http.ResponseWriter, binding interface{}) error {
|
|||
return err
|
||||
}
|
||||
|
||||
h.Head.Write(w)
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
h.Head.Write(hw)
|
||||
}
|
||||
out.WriteTo(w)
|
||||
|
||||
// Return the buffer to the pool.
|
||||
|
@ -95,7 +100,7 @@ func (h HTML) Render(w http.ResponseWriter, binding interface{}) error {
|
|||
}
|
||||
|
||||
// Render a JSON response.
|
||||
func (j JSON) Render(w http.ResponseWriter, v interface{}) error {
|
||||
func (j JSON) Render(w io.Writer, v interface{}) error {
|
||||
if j.StreamingJSON {
|
||||
return j.renderStreamingJSON(w, v)
|
||||
}
|
||||
|
@ -121,7 +126,9 @@ func (j JSON) Render(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
|
||||
// JSON marshaled fine, write out the result.
|
||||
j.Head.Write(w)
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
j.Head.Write(hw)
|
||||
}
|
||||
if len(j.Prefix) > 0 {
|
||||
w.Write(j.Prefix)
|
||||
}
|
||||
|
@ -129,8 +136,10 @@ func (j JSON) Render(w http.ResponseWriter, v interface{}) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (j JSON) renderStreamingJSON(w http.ResponseWriter, v interface{}) error {
|
||||
j.Head.Write(w)
|
||||
func (j JSON) renderStreamingJSON(w io.Writer, v interface{}) error {
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
j.Head.Write(hw)
|
||||
}
|
||||
if len(j.Prefix) > 0 {
|
||||
w.Write(j.Prefix)
|
||||
}
|
||||
|
@ -139,7 +148,7 @@ func (j JSON) renderStreamingJSON(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
|
||||
// Render a JSONP response.
|
||||
func (j JSONP) Render(w http.ResponseWriter, v interface{}) error {
|
||||
func (j JSONP) Render(w io.Writer, v interface{}) error {
|
||||
var result []byte
|
||||
var err error
|
||||
|
||||
|
@ -153,7 +162,9 @@ func (j JSONP) Render(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
|
||||
// JSON marshaled fine, write out the result.
|
||||
j.Head.Write(w)
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
j.Head.Write(hw)
|
||||
}
|
||||
w.Write([]byte(j.Callback + "("))
|
||||
w.Write(result)
|
||||
w.Write([]byte(");"))
|
||||
|
@ -166,19 +177,21 @@ func (j JSONP) Render(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
|
||||
// Render a text response.
|
||||
func (t Text) Render(w http.ResponseWriter, v interface{}) error {
|
||||
c := w.Header().Get(ContentType)
|
||||
if c != "" {
|
||||
t.Head.ContentType = c
|
||||
func (t Text) Render(w io.Writer, v interface{}) error {
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
c := hw.Header().Get(ContentType)
|
||||
if c != "" {
|
||||
t.Head.ContentType = c
|
||||
}
|
||||
t.Head.Write(hw)
|
||||
}
|
||||
|
||||
t.Head.Write(w)
|
||||
w.Write([]byte(v.(string)))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Render an XML response.
|
||||
func (x XML) Render(w http.ResponseWriter, v interface{}) error {
|
||||
func (x XML) Render(w io.Writer, v interface{}) error {
|
||||
var result []byte
|
||||
var err error
|
||||
|
||||
|
@ -193,7 +206,9 @@ func (x XML) Render(w http.ResponseWriter, v interface{}) error {
|
|||
}
|
||||
|
||||
// XML marshaled fine, write out the result.
|
||||
x.Head.Write(w)
|
||||
if hw, ok := w.(http.ResponseWriter); ok {
|
||||
x.Head.Write(hw)
|
||||
}
|
||||
if len(x.Prefix) > 0 {
|
||||
w.Write(x.Prefix)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue