diff --git a/errors/errors.go b/errors/errors.go index 76e85d9..9a12c4b 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -32,6 +32,7 @@ var ( ErrTimeout = NewTimeoutError("timed out") ErrUnprocessable = NewUnprocessableError("cannot process request") ErrNoPoolsAvailable = NewNoPoolsAvailableError("no pools available") + ErrNoCapacity = NewNoCapacityError("no capacity available") ) type baseError struct { @@ -43,7 +44,7 @@ func (b *baseError) Error() string { } // NewProviderError returns a new ProviderError -func NewProviderError(msg string, a ...interface{}) error { +func NewProviderError(msg string, a ...any) error { return &ProviderError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -66,7 +67,7 @@ func (p *ProviderError) Is(target error) bool { } // NewMissingSecretError returns a new MissingSecretError -func NewMissingSecretError(msg string, a ...interface{}) error { +func NewMissingSecretError(msg string, a ...any) error { return &MissingSecretError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -112,7 +113,7 @@ func (p *UnauthorizedError) Is(target error) bool { } // NewNotFoundError returns a new NotFoundError -func NewNotFoundError(msg string, a ...interface{}) error { +func NewNotFoundError(msg string, a ...any) error { return &NotFoundError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -158,7 +159,7 @@ func (p *DuplicateUserError) Is(target error) bool { } // NewBadRequestError returns a new BadRequestError -func NewBadRequestError(msg string, a ...interface{}) error { +func NewBadRequestError(msg string, a ...any) error { return &BadRequestError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -181,7 +182,7 @@ func (p *BadRequestError) Is(target error) bool { } // NewConflictError returns a new ConflictError -func NewConflictError(msg string, a ...interface{}) error { +func NewConflictError(msg string, a ...any) error { return &ConflictError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -204,7 +205,7 @@ func (p *ConflictError) Is(target error) bool { } // NewTimeoutError returns a new TimoutError -func NewTimeoutError(msg string, a ...interface{}) error { +func NewTimeoutError(msg string, a ...any) error { return &TimoutError{ baseError{ msg: fmt.Sprintf(msg, a...), @@ -227,15 +228,15 @@ func (p *TimoutError) Is(target error) bool { } // NewUnprocessableError returns a new UnprocessableError -func NewUnprocessableError(msg string, a ...interface{}) error { - return &TimoutError{ +func NewUnprocessableError(msg string, a ...any) error { + return &UnprocessableError{ baseError{ msg: fmt.Sprintf(msg, a...), }, } } -// TimoutError is returned when an operation times out. +// UnprocessableError is returned when a request cannot be processed. type UnprocessableError struct { baseError } @@ -249,16 +250,16 @@ func (p *UnprocessableError) Is(target error) bool { return ok } -// NewNoPoolsAvailableError returns a new UnprocessableError -func NewNoPoolsAvailableError(msg string, a ...interface{}) error { - return &TimoutError{ +// NewNoPoolsAvailableError returns a new NoPoolsAvailableError +func NewNoPoolsAvailableError(msg string, a ...any) error { + return &NoPoolsAvailableError{ baseError{ msg: fmt.Sprintf(msg, a...), }, } } -// NoPoolsAvailableError is returned when anthere are not pools available. +// NoPoolsAvailableError is returned when there are no pools available. type NoPoolsAvailableError struct { baseError } @@ -271,3 +272,26 @@ func (p *NoPoolsAvailableError) Is(target error) bool { _, ok := target.(*NoPoolsAvailableError) return ok } + +// NewNoCapacityError returns a new NoCapacityError +func NewNoCapacityError(msg string, a ...any) error { + return &NoCapacityError{ + baseError{ + msg: fmt.Sprintf(msg, a...), + }, + } +} + +// NoCapacityError is returned when there is no capacity available. +type NoCapacityError struct { + baseError +} + +func (p *NoCapacityError) Is(target error) bool { + if target == nil { + return false + } + + _, ok := target.(*NoCapacityError) + return ok +} diff --git a/go.mod b/go.mod index 062634a..7e0f963 100644 --- a/go.mod +++ b/go.mod @@ -6,20 +6,20 @@ require ( github.com/google/uuid v1.6.0 github.com/gorilla/handlers v1.5.2 github.com/gorilla/websocket v1.5.4-0.20240702125206-a62d9d2a8413 - github.com/mattn/go-isatty v0.0.20 - github.com/minio/sio v0.4.3 + github.com/mattn/go-isatty v0.0.22 + github.com/minio/sio v0.5.1 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.9.0 github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 - golang.org/x/crypto v0.49.0 - golang.org/x/sys v0.42.0 + golang.org/x/crypto v0.53.0 + golang.org/x/sys v0.46.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/felixge/httpsnoop v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/net v0.56.0 // indirect ) diff --git a/go.sum b/go.sum index a159bb2..0c8fa92 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc= +github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= @@ -10,10 +12,14 @@ github.com/gorilla/websocket v1.5.4-0.20240702125206-a62d9d2a8413 h1:0Zn/h+BUQg6 github.com/gorilla/websocket v1.5.4-0.20240702125206-a62d9d2a8413/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/minio/sio v0.4.1 h1:EMe3YBC1nf+sRQia65Rutxi+Z554XPV0dt8BIBA+a/0= github.com/minio/sio v0.4.1/go.mod h1:oBSjJeGbBdRMZZwna07sX9EFzZy+ywu5aofRiV1g79I= github.com/minio/sio v0.4.3 h1:JqyID1XM86KwBZox5RAdLD4MLPIDoCY2cke2CXCJCkg= github.com/minio/sio v0.4.3/go.mod h1:4ANoe4CCXqnt1FCiLM0+vlBUhhWZzVOhYCz0069KtFc= +github.com/minio/sio v0.5.1 h1:sqtImrnCSHbDqO/lVy3tfbsctHzfelDv3NbXWEVcWT8= +github.com/minio/sio v0.5.1/go.mod h1:4ANoe4CCXqnt1FCiLM0+vlBUhhWZzVOhYCz0069KtFc= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -26,15 +32,21 @@ golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=