[ISSUE-70861663] add tracking with request id in debug mode
diff --git a/accessEntity/api.go b/accessEntity/api.go
index fb49fca..dd457f5 100644
--- a/accessEntity/api.go
+++ b/accessEntity/api.go
@@ -63,6 +63,8 @@
StatusExpired = "EXPIRED"
)
+const headerRequestId = "X-Gateway-Request-Id"
+
var (
Identifiers = map[string]bool{
"appid": true,
@@ -152,7 +154,12 @@
func (a *ApiManager) handleEndpoint(endpoint string, w http.ResponseWriter, r *http.Request) {
ids, org, err := extractIdentifiers(r.URL.Query())
if err != nil {
- common.WriteError(w, err.Error(), INVALID_PARAMETERS, http.StatusBadRequest)
+ writeJson(http.StatusBadRequest,
+ common.ErrorResponse{
+ ResponseCode: strconv.Itoa(INVALID_PARAMETERS),
+ ResponseMessage: err.Error(),
+ StatusCode: http.StatusBadRequest,
+ }, w, r)
}
var res interface{}
var errRes *common.ErrorResponse
@@ -172,11 +179,10 @@
}
if errRes != nil {
- w.WriteHeader(errRes.StatusCode)
- writeJson(errRes, w, r)
+ writeJson(errRes.StatusCode, errRes, w, r)
return
}
- writeJson(res, w, r)
+ writeJson(http.StatusOK, res, w, r)
}
func (a *ApiManager) HandleApps(w http.ResponseWriter, r *http.Request) {
@@ -709,13 +715,19 @@
}
}
-func writeJson(obj interface{}, w http.ResponseWriter, r *http.Request) {
+func writeJson(code int, obj interface{}, w http.ResponseWriter, r *http.Request) {
+
+ requestId := r.Header.Get(headerRequestId)
bytes, err := json.Marshal(obj)
if err != nil {
- log.Error("unable to marshal errorResponse: " + err.Error())
- w.Write([]byte("unable to marshal errorResponse: " + err.Error()))
+ w.Header().Set("Content-Type", "text/plain")
+ w.WriteHeader(http.StatusInternalServerError)
+ log.Errorf("unable to marshal errorResponse for request_id=[%s]: %v", requestId, err)
+ w.Write([]byte("unable to marshal errorResponse : " + err.Error()))
} else {
w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(code)
+ log.Debugf("Sending response_code=%d for request_id=[%s]: %s", code, requestId, bytes)
w.Write(bytes)
}
}
diff --git a/accessEntity/api_test.go b/accessEntity/api_test.go
index eeda673..128d855 100644
--- a/accessEntity/api_test.go
+++ b/accessEntity/api_test.go
@@ -43,6 +43,7 @@
uri.RawQuery = query.Encode()
httpReq, err := http.NewRequest("GET", uri.String(), nil)
Expect(err).Should(Succeed())
+ httpReq.Header.Set(headerRequestId, strconv.Itoa(testCount))
res, err := client.Do(httpReq)
Expect(err).Should(Succeed())
defer res.Body.Close()
diff --git a/common/api.go b/common/api.go
deleted file mode 100644
index 9b3f243..0000000
--- a/common/api.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2017 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package common
-
-import (
- "encoding/json"
- "net/http"
- "strconv"
-)
-
-func WriteError(w http.ResponseWriter, reason string, errorCode int, statusCode int) {
- w.WriteHeader(statusCode)
- resp := ErrorResponse{
- ResponseCode: strconv.Itoa(errorCode),
- ResponseMessage: reason,
- StatusCode: statusCode,
- }
- bytes, err := json.Marshal(resp)
- if err != nil {
- w.Write([]byte("unable to marshal errorResponse: " + err.Error()))
- } else {
- w.Write(bytes)
- }
-}