render.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 = MsgPack{}
  27. _ Render = Reader{}
  28. _ Render = AsciiJSON{}
  29. _ Render = ProtoBuf{}
  30. )
  31. func writeContentType(w http.ResponseWriter, value []string) {
  32. header := w.Header()
  33. if val := header["Content-Type"]; len(val) == 0 {
  34. header["Content-Type"] = value
  35. }
  36. }