render.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. package render
  5. import "net/http"
  6. // Render interface is to be implemented by JSON, XML, HTML, YAML and so on.
  7. type Render interface {
  8. // Render writes data with custom ContentType.
  9. Render(http.ResponseWriter) error
  10. // WriteContentType writes custom ContentType.
  11. WriteContentType(w http.ResponseWriter)
  12. }
  13. var (
  14. _ Render = JSON{}
  15. _ Render = IndentedJSON{}
  16. _ Render = SecureJSON{}
  17. _ Render = JsonpJSON{}
  18. _ Render = XML{}
  19. _ Render = String{}
  20. _ Render = Redirect{}
  21. _ Render = Data{}
  22. _ Render = HTML{}
  23. _ HTMLRender = HTMLDebug{}
  24. _ HTMLRender = HTMLProduction{}
  25. _ Render = YAML{}
  26. _ Render = Reader{}
  27. _ Render = AsciiJSON{}
  28. _ Render = ProtoBuf{}
  29. )
  30. func writeContentType(w http.ResponseWriter, value []string) {
  31. header := w.Header()
  32. if val := header["Content-Type"]; len(val) == 0 {
  33. header["Content-Type"] = value
  34. }
  35. }