(err error)
| 625 | } |
| 626 | |
| 627 | func dropboxAPIErrorSummaryValue(err error) (string, bool) { |
| 628 | if err == nil { |
| 629 | return "", false |
| 630 | } |
| 631 | value := reflect.ValueOf(err) |
| 632 | if !value.IsValid() { |
| 633 | return "", false |
| 634 | } |
| 635 | if value.Kind() == reflect.Pointer { |
| 636 | if value.IsNil() { |
| 637 | return "", false |
| 638 | } |
| 639 | value = value.Elem() |
| 640 | } |
| 641 | if value.Kind() != reflect.Struct { |
| 642 | return "", false |
| 643 | } |
| 644 | |
| 645 | typ := value.Type() |
| 646 | if typ == reflect.TypeOf(dropbox.APIError{}) { |
| 647 | return err.Error(), true |
| 648 | } |
| 649 | if !strings.HasPrefix(typ.PkgPath(), "github.com/dropbox/dropbox-sdk-go-unofficial/") { |
| 650 | return "", false |
| 651 | } |
| 652 | |
| 653 | field := value.FieldByName("APIError") |
| 654 | if summary, ok := dropboxAPIErrorFieldSummary(field); ok { |
| 655 | return summary, true |
| 656 | } |
| 657 | if strings.HasSuffix(typ.Name(), "APIError") { |
| 658 | return err.Error(), true |
| 659 | } |
| 660 | return "", false |
| 661 | } |
| 662 | |
| 663 | func dropboxAPIErrorFieldSummary(field reflect.Value) (string, bool) { |
| 664 | if !field.IsValid() || field.Type() != reflect.TypeOf(dropbox.APIError{}) { |
no test coverage detected