render.go 926 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. //debug
  11. //fmt.Println("response msg = ", string(bytes))
  12. ctx.Writer.WriteHeader(200)
  13. _, err := ctx.Writer.Write(bytes)
  14. if err != nil {
  15. panic(err)
  16. }
  17. }
  18. //String render from string
  19. func (ctx *Context) String(str string) {
  20. writeContextType(ctx.Writer, plainContentType)
  21. ctx.Render([]byte(str))
  22. }
  23. //XML render to xml
  24. func (ctx *Context) XML(obj interface{}) {
  25. writeContextType(ctx.Writer, xmlContentType)
  26. bytes, err := xml.Marshal(obj)
  27. if err != nil {
  28. panic(err)
  29. }
  30. ctx.Render(bytes)
  31. }
  32. func writeContextType(w http.ResponseWriter, value []string) {
  33. header := w.Header()
  34. if val := header["Content-Type"]; len(val) == 0 {
  35. header["Content-Type"] = value
  36. }
  37. }