77 lines
1.2 KiB
Go
77 lines
1.2 KiB
Go
package exception
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
// 12 chars len
|
|
// :1=status
|
|
// :3=service
|
|
// :2=endpoint
|
|
// :1=common/specific
|
|
// :5=original
|
|
|
|
type Builder struct {
|
|
Status string
|
|
Service string
|
|
Endpoint string
|
|
Type string
|
|
Original string
|
|
Error error
|
|
ErrorCode string
|
|
}
|
|
|
|
func (self *Builder) SetStatus(s string) *Builder {
|
|
self.Status = s
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) SetService(s string) *Builder {
|
|
self.Service = s
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) SetEndpoint(s string) *Builder {
|
|
self.Endpoint = s
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) SetType(s string) *Builder {
|
|
self.Type = s
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) SetOriginal(s string) *Builder {
|
|
self.Original = s
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) SetError(e error) *Builder {
|
|
self.Error = e
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) build() {
|
|
self.ErrorCode = fmt.Sprintf("%s%s%s%s%s",
|
|
self.Status,
|
|
self.Service,
|
|
self.Endpoint,
|
|
self.Type,
|
|
self.Original,
|
|
)
|
|
}
|
|
|
|
func (self *Builder) Throw(ctx *context.Context) *Builder {
|
|
self.build()
|
|
if self.Error != nil {
|
|
ErrorHandler(ctx, self.Status, self.ErrorCode, self.Error)
|
|
}
|
|
return self
|
|
}
|
|
|
|
func (self *Builder) String() string {
|
|
self.build()
|
|
return self.ErrorCode
|
|
}
|