github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/cmd/serve/responses.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package serve 10 11 import ( 12 "encoding/json" 13 "net/http" 14 15 "github.com/vchain-us/vcn/internal/logs" 16 "github.com/vchain-us/vcn/pkg/cmd/internal/types" 17 ) 18 19 type errorResponse struct { 20 Message string `json:"message"` 21 Code int `json:"code"` 22 Error string `json:"error"` 23 } 24 25 func writeResponse(w http.ResponseWriter, code int, b []byte) { 26 headers := w.Header() 27 headers.Set("Content-Type", "application/json") 28 w.WriteHeader(code) 29 _, err := w.Write(b) 30 if err != nil { 31 logs.LOG.Error(err) 32 } 33 } 34 35 func writeResult(w http.ResponseWriter, code int, r *types.Result) { 36 b, err := json.Marshal(r) 37 if err != nil || b == nil { 38 writeError(w, http.StatusInternalServerError, err) 39 return 40 } 41 42 writeResponse(w, code, b) 43 } 44 45 func writeResults(w http.ResponseWriter, code int, r []types.Result) { 46 b, err := json.Marshal(r) 47 if err != nil || b == nil { 48 writeError(w, http.StatusInternalServerError, err) 49 return 50 } 51 52 writeResponse(w, code, b) 53 } 54 55 func writeLcResult(w http.ResponseWriter, code int, r *types.LcResult) { 56 b, err := json.Marshal(r) 57 if err != nil || b == nil { 58 writeError(w, http.StatusInternalServerError, err) 59 return 60 } 61 62 writeResponse(w, code, b) 63 } 64 65 func writeLcResults(w http.ResponseWriter, code int, r []*types.LcResult) { 66 b, err := json.Marshal(r) 67 if err != nil || b == nil { 68 writeError(w, http.StatusInternalServerError, err) 69 return 70 } 71 72 writeResponse(w, code, b) 73 } 74 75 func writeError(w http.ResponseWriter, code int, err error) { 76 eR := errorResponse{ 77 Message: http.StatusText(code), 78 Code: code, 79 Error: err.Error(), 80 } 81 b, _ := json.Marshal(eR) 82 83 writeResponse(w, code, b) 84 }