1 // Copyright 2022 Google LLC. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4 5 package gensupport
6 7 import (
8 "errors"
9 10 "github.com/googleapis/gax-go/v2/apierror"
11 "google.golang.org/api/googleapi"
12 )
13 14 // WrapError creates an [apierror.APIError] from err, wraps it in err, and
15 // returns err. If err is not a [googleapi.Error] (or a
16 // [google.golang.org/grpc/status.Status]), it returns err without modification.
17 func WrapError(err error) error {
18 var herr *googleapi.Error
19 apiError, ok := apierror.ParseError(err, false)
20 if ok && errors.As(err, &herr) {
21 herr.Wrap(apiError)
22 }
23 return err
24 }
25