diff options
author | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2020-10-27 12:21:51 +0100 |
---|---|---|
committer | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2020-10-27 12:21:51 +0100 |
commit | d90eed44990f34a87c286ee21f5579506143040d (patch) | |
tree | dcae92b13e27e16c5d264caaaa89f9cd0f83a203 | |
parent | 214b8725f92c928383fd306f9074caf493ac6e93 (diff) |
moved common json-write code into a helper
-rw-r--r-- | handler.go | 41 | ||||
-rw-r--r-- | reqres.go | 14 |
2 files changed, 24 insertions, 31 deletions
@@ -4,7 +4,6 @@ import ( "context" "fmt" - "encoding/json" "net/http" "github.com/golang/glog" @@ -103,18 +102,12 @@ func getEntries(ctx context.Context, i *instance, w http.ResponseWriter, r *http } // TODO: use the returned root for tree_size santity checking against start? - w.Header().Set("Content-Type", "application/json") - data, err := NewGetEntriesResponse(trillianResponse.Leaves) + response, err := NewGetEntriesResponse(trillianResponse.Leaves) if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed createing GetEntriesResponse: %v", err) + return http.StatusInternalServerError, fmt.Errorf("failed creating GetEntriesResponse: %v", err) } - json, err := json.Marshal(&data) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed json-encoding GetEntriesResponse: %v", err) - } - _, err = w.Write(json) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed writing get-entries response: %v", err) + if err := WriteJsonResponse(response, w); err != nil { + return http.StatusInternalServerError, err } return http.StatusOK, nil } @@ -123,15 +116,8 @@ func getEntries(ctx context.Context, i *instance, w http.ResponseWriter, r *http func getAnchors(_ context.Context, i *instance, w http.ResponseWriter, _ *http.Request) (int, error) { glog.Info("in getAnchors") data := NewGetAnchorsResponse(i.anchorsPool.RawCertificates()) - json, err := json.Marshal(&data) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed json-encoding GetAnchorsResponse: %v", err) - } - - w.Header().Set("Content-Type", "application/json") - _, err = w.Write(json) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed writing get-anchors response: %v", err) + if err := WriteJsonResponse(data, w); err != nil { + return http.StatusInternalServerError, err } return http.StatusOK, nil } @@ -162,21 +148,14 @@ func getProofByHash(ctx context.Context, i *instance, w http.ResponseWriter, r * } // TODO: verify that proof is valid? - w.Header().Set("Content-Type", "application/json") - data, err := NewGetProofByHashResponse(uint64(request.TreeSize), trillianResponse.Proof[0]) + response, err := NewGetProofByHashResponse(uint64(request.TreeSize), trillianResponse.Proof[0]) if err != nil { return http.StatusInternalServerError, fmt.Errorf("failed creating get-proof-by-hash response: %v", err) } - json, err := json.Marshal(data) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed json-encoding GetProofByHashResponse: %v", err) - } - _, err = w.Write(json) - if err != nil { - return http.StatusInternalServerError, fmt.Errorf("failed writing get-entries response: %v", err) + if err := WriteJsonResponse(response, w); err != nil { + return http.StatusInternalServerError, err } - - return http.StatusOK, nil // TODO + return http.StatusOK, nil } // getConsistencyProof provides a consistency proof between two STHs @@ -241,3 +241,17 @@ func UnpackJsonPost(r *http.Request, unpack interface{}) error { } return nil } + +func WriteJsonResponse(response interface{}, w http.ResponseWriter) error { + json, err := json.Marshal(&response) + if err != nil { + return fmt.Errorf("json-encoding failed: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + _, err = w.Write(json) + if err != nil { + return fmt.Errorf("failed writing json response: %v", err) + } + return nil +} |