|  | @@ -24,33 +24,49 @@ type Error struct {
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  // Error implements error.Error().
 |  |  // Error implements error.Error().
 | 
											
												
													
														|  | -func (v *Error) Error() string {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (v Error) Error() string {
 | 
											
												
													
														|  |  	return v.message
 |  |  	return v.message
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  // Inner implements hasInnerError.Inner()
 |  |  // Inner implements hasInnerError.Inner()
 | 
											
												
													
														|  | -func (v *Error) Inner() error {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (v Error) Inner() error {
 | 
											
												
													
														|  |  	if v.inner == nil {
 |  |  	if v.inner == nil {
 | 
											
												
													
														|  |  		return nil
 |  |  		return nil
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	return v.inner
 |  |  	return v.inner
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -func (v *Error) ActionRequired() bool {
 |  | 
 | 
											
												
													
														|  | 
 |  | +func (v Error) ActionRequired() bool {
 | 
											
												
													
														|  |  	return v.actionRequired
 |  |  	return v.actionRequired
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +func (v Error) RequireUserAction() Error {
 | 
											
												
													
														|  | 
 |  | +	v.actionRequired = true
 | 
											
												
													
														|  | 
 |  | +	return v
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (v Error) Message(msg ...interface{}) Error {
 | 
											
												
													
														|  | 
 |  | +	return Error{
 | 
											
												
													
														|  | 
 |  | +		inner:   v,
 | 
											
												
													
														|  | 
 |  | +		message: serial.Concat(msg...),
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (v Error) Format(format string, values ...interface{}) Error {
 | 
											
												
													
														|  | 
 |  | +	return v.Message(fmt.Sprintf(format, values...))
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  // New returns a new error object with message formed from given arguments.
 |  |  // New returns a new error object with message formed from given arguments.
 | 
											
												
													
														|  | -func New(msg ...interface{}) error {
 |  | 
 | 
											
												
													
														|  | -	return &Error{
 |  | 
 | 
											
												
													
														|  | 
 |  | +func New(msg ...interface{}) Error {
 | 
											
												
													
														|  | 
 |  | +	return Error{
 | 
											
												
													
														|  |  		message: serial.Concat(msg...),
 |  |  		message: serial.Concat(msg...),
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -// Base returns an ErrorBuilder based on the given error.
 |  | 
 | 
											
												
													
														|  | -func Base(err error) ErrorBuilder {
 |  | 
 | 
											
												
													
														|  | -	return ErrorBuilder{
 |  | 
 | 
											
												
													
														|  | -		error: err,
 |  | 
 | 
											
												
													
														|  | 
 |  | +// Base returns an Error based on the given error.
 | 
											
												
													
														|  | 
 |  | +func Base(err error) Error {
 | 
											
												
													
														|  | 
 |  | +	return Error{
 | 
											
												
													
														|  | 
 |  | +		inner: err,
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -86,38 +102,3 @@ func IsActionRequired(err error) bool {
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	return false
 |  |  	return false
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -type ErrorBuilder struct {
 |  | 
 | 
											
												
													
														|  | -	error
 |  | 
 | 
											
												
													
														|  | -	actionRequired bool
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -func (v ErrorBuilder) RequireUserAction() ErrorBuilder {
 |  | 
 | 
											
												
													
														|  | -	v.actionRequired = true
 |  | 
 | 
											
												
													
														|  | -	return v
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -// Message returns an error object with given message and base error.
 |  | 
 | 
											
												
													
														|  | -func (v ErrorBuilder) Message(msg ...interface{}) error {
 |  | 
 | 
											
												
													
														|  | -	if v.error == nil {
 |  | 
 | 
											
												
													
														|  | -		return nil
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -	return &Error{
 |  | 
 | 
											
												
													
														|  | -		message:        serial.Concat(msg...) + " > " + v.error.Error(),
 |  | 
 | 
											
												
													
														|  | -		inner:          v.error,
 |  | 
 | 
											
												
													
														|  | -		actionRequired: v.actionRequired,
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -// Format returns an errors object with given message format and base error.
 |  | 
 | 
											
												
													
														|  | -func (v ErrorBuilder) Format(format string, values ...interface{}) error {
 |  | 
 | 
											
												
													
														|  | -	if v.error == nil {
 |  | 
 | 
											
												
													
														|  | -		return nil
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	return &Error{
 |  | 
 | 
											
												
													
														|  | -		message:        fmt.Sprintf(format, values...) + " > " + v.error.Error(),
 |  | 
 | 
											
												
													
														|  | -		inner:          v.error,
 |  | 
 | 
											
												
													
														|  | -		actionRequired: v.actionRequired,
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 |