1// Copyright 2014 Manu Martinez-Almeida.  All rights reserved.
2// Use of this source code is governed by a MIT style
3// license that can be found in the LICENSE file.
4
5package render
6
7import "net/http"
8
9// Render interface is to be implemented by JSON, XML, HTML, YAML and so on.
10type Render interface {
11	// Render writes data with custom ContentType.
12	Render(http.ResponseWriter) error
13	// WriteContentType writes custom ContentType.
14	WriteContentType(w http.ResponseWriter)
15}
16
17var (
18	_ Render     = JSON{}
19	_ Render     = IndentedJSON{}
20	_ Render     = SecureJSON{}
21	_ Render     = JsonpJSON{}
22	_ Render     = XML{}
23	_ Render     = String{}
24	_ Render     = Redirect{}
25	_ Render     = Data{}
26	_ Render     = HTML{}
27	_ HTMLRender = HTMLDebug{}
28	_ HTMLRender = HTMLProduction{}
29	_ Render     = YAML{}
30	_ Render     = Reader{}
31	_ Render     = AsciiJSON{}
32	_ Render     = ProtoBuf{}
33)
34
35func writeContentType(w http.ResponseWriter, value []string) {
36	header := w.Header()
37	if val := header["Content-Type"]; len(val) == 0 {
38		header["Content-Type"] = value
39	}
40}
41