[XAPID-1002] update configrationStatus endpoint
diff --git a/api.go b/api.go index 9e3d5ab..553673c 100644 --- a/api.go +++ b/api.go
@@ -42,7 +42,7 @@ deploymentsEndpoint = "/configurations" blobEndpointPath = "/blobs" blobEndpoint = blobEndpointPath + "/{blobId}" - configStatusEndpoint = "/configstatus" + configStatusEndpoint = "/configurations/status" heartbeatEndpoint = "/heartbeat/{uuid}" registerEndpoint = "/register/{uuid}" ) @@ -363,8 +363,7 @@ vars := mux.Vars(r) uuid := vars["uuid"] - // parse body - + // parse & validate body body := r.Body defer body.Close() bodyBytes, err := ioutil.ReadAll(body) @@ -388,7 +387,10 @@ return } + // connect to tracker trackerResp := a.trackerCl.putRegister(uuid, reqBody) + + // write response switch trackerResp.code { case http.StatusOK: a.writePutRegisterResp(w, trackerResp) @@ -401,8 +403,7 @@ func (a *apiManager) apiPutConfigStatus(w http.ResponseWriter, r *http.Request) { - // parse body - + // parse & validate body body := r.Body defer body.Close() bodyBytes, err := ioutil.ReadAll(body) @@ -425,7 +426,11 @@ a.writeError(w, http.StatusBadRequest, API_ERR_INVALID_PARAMETERS, reason) return } + + // connect to tracker trackerResp := a.trackerCl.putConfigStatus(reqBody) + + // write response switch trackerResp.code { case http.StatusOK: a.writeConfigStatusResp(w, trackerResp) @@ -436,6 +441,7 @@ } func (a *apiManager) apiPutHeartbeat(w http.ResponseWriter, r *http.Request) { + // parse & validate vars := mux.Vars(r) uuid := vars["uuid"] if !isValidUuid(uuid) { @@ -447,7 +453,11 @@ a.writeError(w, http.StatusBadRequest, API_ERR_INVALID_PARAMETERS, "Bad/Missing reportedTime") return } + + // connect to tracker trackerResp := a.trackerCl.putHeartbeat(uuid, reported) + + // write response switch trackerResp.code { case http.StatusOK: a.writePutHeartbeatResp(w, trackerResp) @@ -458,25 +468,21 @@ } func (a *apiManager) writeConfigStatusResp(w http.ResponseWriter, tr *trackerResponse) { - w.Header().Add("Content-type", tr.contentType) - _, err := w.Write(tr.body) - if err != nil { - log.Errorf("failed to write response: %v", err) - a.writeError(w, http.StatusInternalServerError, API_ERR_INTERNAL, err.Error()) - } + a.writeSimpleResp(w, tr) } func (a *apiManager) writePutRegisterResp(w http.ResponseWriter, tr *trackerResponse) { - w.Header().Add("Content-type", tr.contentType) - _, err := w.Write(tr.body) - if err != nil { - log.Errorf("failed to write response: %v", err) - a.writeError(w, http.StatusInternalServerError, API_ERR_INTERNAL, err.Error()) - } + a.writeSimpleResp(w, tr) } func (a *apiManager) writePutHeartbeatResp(w http.ResponseWriter, tr *trackerResponse) { - w.Header().Add("Content-type", tr.contentType) + a.writeSimpleResp(w, tr) +} + +func (a *apiManager) writeSimpleResp(w http.ResponseWriter, tr *trackerResponse) { + if tr.contentType != "" { + w.Header().Add("Content-type", tr.contentType) + } _, err := w.Write(tr.body) if err != nil { log.Errorf("failed to write response: %v", err)
diff --git a/clients.go b/clients.go index d2876f5..7680029 100644 --- a/clients.go +++ b/clients.go
@@ -11,7 +11,7 @@ const ( configBearerToken = "apigeesync_bearer_token" - trackerConfigStatusEndpoint = "/serviceconfigstatus" + trackerConfigStatusEndpoint = "/configurations/status" trackerHeartbeatEndpoint = "/serviceheartbeat/{uuid}" trackerRegisterEndpoint = "/serviceregister/{uuid}" ) @@ -126,11 +126,11 @@ return (internalError(err)) } res := &trackerResponse{} + res.contentType = r.Header.Get("Content-type") switch r.StatusCode { case http.StatusOK: res.code = r.StatusCode res.body = trackerBody - res.contentType = r.Header.Get("Content-type") case http.StatusUnauthorized, http.StatusForbidden: res.code = http.StatusInternalServerError res.body = []byte("apid token rejected by tracker") @@ -143,7 +143,6 @@ log.Infof("Abnormal Response from Tracker: %v, %v", r.StatusCode, trackerBody) res.code = r.StatusCode res.body = trackerBody - res.contentType = r.Header.Get("Content-type") } return res }