render.go 868 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package context
  2. import (
  3. "encoding/xml"
  4. "net/http"
  5. )
  6. var xmlContentType = []string{"application/xml; charset=utf-8"}
  7. var plainContentType = []string{"text/plain; charset=utf-8"}
  8. //Render render from bytes
  9. func (ctx *Context) Render(bytes []byte) {
  10. ctx.Writer.WriteHeader(200)
  11. _, err := ctx.Writer.Write(bytes)
  12. if err != nil {
  13. panic(err)
  14. }
  15. }
  16. //String render from string
  17. func (ctx *Context) String(str string) {
  18. writeContextType(ctx.Writer, plainContentType)
  19. ctx.Render([]byte(str))
  20. }
  21. //XML render to xml
  22. func (ctx *Context) XML(obj interface{}) {
  23. writeContextType(ctx.Writer, xmlContentType)
  24. bytes, err := xml.Marshal(obj)
  25. if err != nil {
  26. panic(err)
  27. }
  28. ctx.Render(bytes)
  29. }
  30. func writeContextType(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. }