func()

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)
	}
}