repository.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package module
  2. import (
  3. "encoding/json"
  4. "log"
  5. "net/http"
  6. )
  7. // helpers for repositorys
  8. // JSONEncode encodes an interface to json encoded byte array, formatted if debug is enabled
  9. func JSONEncode(v interface{}) ([]byte, error) {
  10. var (
  11. err error
  12. rawJSON []byte
  13. )
  14. if Conf.Debug {
  15. rawJSON, err = json.MarshalIndent(v, "", " ") // debug output
  16. if err != nil {
  17. log.Println("MARSHAL FAILED")
  18. log.Println(err)
  19. return []byte(""), err
  20. }
  21. } else {
  22. rawJSON, err = json.Marshal(v) // prod
  23. if err != nil {
  24. log.Println("MARSHAL FAILED")
  25. log.Println(err)
  26. return []byte(""), err
  27. }
  28. }
  29. return rawJSON, nil
  30. }
  31. // JSONDecode decodes given JSON into passed interface object
  32. func JSONDecode(rawJSON []byte, v interface{}) error {
  33. return json.Unmarshal(rawJSON, v)
  34. }
  35. // JSONReq decodes POST data in request body in passed interface
  36. func JSONReq(r *http.Request, v interface{}) {
  37. json.NewDecoder(r.Body).Decode(v)
  38. }
  39. // JSONResp encodes passed interface and responses the request with interface JSON encoded
  40. func JSONResp(w http.ResponseWriter, v interface{}) {
  41. enc := json.NewEncoder(w)
  42. if Conf.Debug {
  43. enc.SetIndent("", " ")
  44. }
  45. enc.Encode(v)
  46. }