github.com/akamai/AkamaiOPEN-edgegrid-golang@v1.2.2/configgtm-v1_5/errors.go (about)

     1  package configgtm
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  type ConfigGTMError interface {
     8  	error
     9  	Network() bool
    10  	NotFound() bool
    11  	FailedToSave() bool
    12  	ValidationFailed() bool
    13  }
    14  
    15  func IsConfigGTMError(e error) bool {
    16  	_, ok := e.(ConfigGTMError)
    17  	return ok
    18  }
    19  
    20  type CommonError struct {
    21  	entityName       string
    22  	name             string
    23  	httpErrorMessage string
    24  	apiErrorMessage  string
    25  	err              error
    26  }
    27  
    28  func (e CommonError) SetItem(itemName string, itemVal interface{}) {
    29  	switch itemName {
    30  	case "entityName":
    31  		e.entityName = itemVal.(string)
    32  	case "name":
    33  		e.name = itemVal.(string)
    34  	case "httpErrorMessage":
    35  		e.httpErrorMessage = itemVal.(string)
    36  	case "apiErrorMessage":
    37  		e.apiErrorMessage = itemVal.(string)
    38  	case "err":
    39  		e.err = itemVal.(error)
    40  	}
    41  }
    42  
    43  func (e CommonError) GetItem(itemName string) interface{} {
    44  	switch itemName {
    45  	case "entityName":
    46  		return e.entityName
    47  	case "name":
    48  		return e.name
    49  	case "httpErrorMessage":
    50  		return e.httpErrorMessage
    51  	case "apiErrorMessage":
    52  		return e.apiErrorMessage
    53  	case "err":
    54  		return e.err
    55  	}
    56  
    57  	return nil
    58  }
    59  
    60  func (e CommonError) Network() bool {
    61  	if e.httpErrorMessage != "" {
    62  		return true
    63  	}
    64  	return false
    65  }
    66  
    67  func (e CommonError) NotFound() bool {
    68  	if e.err == nil && e.httpErrorMessage == "" && e.apiErrorMessage == "" {
    69  		return true
    70  	}
    71  	return false
    72  }
    73  
    74  func (CommonError) FailedToSave() bool {
    75  	return false
    76  }
    77  
    78  func (e CommonError) ValidationFailed() bool {
    79  	if e.apiErrorMessage != "" {
    80  		return true
    81  	}
    82  	return false
    83  }
    84  
    85  func (e CommonError) Error() string {
    86  
    87  	if e.Network() {
    88  		return fmt.Sprintf("%s \"%s\" network error: [%s]", e.entityName, e.name, e.httpErrorMessage)
    89  	}
    90  
    91  	if e.NotFound() {
    92  		return fmt.Sprintf("%s \"%s\" not found.", e.entityName, e.name)
    93  	}
    94  
    95  	if e.FailedToSave() {
    96  		return fmt.Sprintf("%s \"%s\" failed to save: [%s]", e.entityName, e.name, e.err.Error())
    97  	}
    98  
    99  	if e.ValidationFailed() {
   100  		return fmt.Sprintf("%s \"%s\" validation failed: [%s]", e.entityName, e.name, e.apiErrorMessage)
   101  	}
   102  
   103  	if e.err != nil {
   104  		return e.err.Error()
   105  	}
   106  
   107  	return "<nil>"
   108  }