in internal/service/handler.go [26:60]
func (s *Server) handleGetSecret(w http.ResponseWriter, r *http.Request) {
params, err := getSecretParams(r, s.pathPrefix)
if err != nil {
s.loggerWrapper.Error("get secret params error:%v", err)
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
ctx, cancel := context.WithTimeout(r.Context(), time.Second*10)
defer cancel()
secret, err := s.FetchSecret(ctx, params)
if err != nil {
var v *model.ErrorResponse
if errors.As(err, &v) {
http.Error(w, v.Error(), v.StatusCode)
} else {
http.Error(w, err.Error(), http.StatusFailedDependency)
}
return
}
payload, err := transResponseFormat(secret, s.responseType)
if err != nil {
s.loggerWrapper.Error("trans response format error:%v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
_, err = w.Write(payload)
if err != nil {
http.Error(w, "Failed to write data", http.StatusInternalServerError)
}
}