dragonfly/cdnsystem/errors/errors.go

155 lines
3.9 KiB
Go

/*
* Copyright 2020 The Dragonfly Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package errors
import (
"fmt"
"github.com/pkg/errors"
)
// ErrURLNotReachable represents the url is a not reachable.
type ErrURLNotReachable struct {
URL string
}
func (e ErrURLNotReachable) Error() string {
return fmt.Sprintf("url %s not reachable", e.URL)
}
// ErrTaskIDDuplicate represents the task id is in conflict.
type ErrTaskIDDuplicate struct {
TaskID string
Cause error
}
func (e ErrTaskIDDuplicate) Error() string {
return fmt.Sprintf("taskId %s conflict: %v", e.TaskID, e.Cause)
}
type ErrInconsistentValues struct {
Expected interface{}
Actual interface{}
}
func (e ErrInconsistentValues) Error() string {
return fmt.Sprintf("inconsistent number of pieces, expected %s, actual: %s", e.Expected, e.Actual)
}
// ErrResourceExpired represents the downloaded resource has expired
type ErrResourceExpired struct {
URL string
}
func (e ErrResourceExpired) Error() string {
return fmt.Sprintf("url %s expired", e.URL)
}
// ErrResourceNotSupportRangeRequest represents the downloaded resource does not support Range downloads
type ErrResourceNotSupportRangeRequest struct {
URL string
}
func (e ErrResourceNotSupportRangeRequest) Error() string {
return fmt.Sprintf("url %s does not support range request", e.URL)
}
// ErrFileNotExist represents the file is not exists
type ErrFileNotExist struct {
File string
}
func (e ErrFileNotExist) Error() string {
return fmt.Sprintf("file or dir %s not exist", e.File)
}
var (
// ErrSystemError represents the error is a system error.
ErrSystemError = errors.New("system error")
// ErrTaskDownloadFail represents an exception was encountered while downloading the file
ErrTaskDownloadFail = errors.New("resource download failed")
// ErrDataNotFound represents the data cannot be found.
ErrDataNotFound = errors.New("data not found")
// ErrInvalidValue represents the value is invalid.
ErrInvalidValue = errors.New("invalid value")
// ErrConvertFailed represents failed to convert.
ErrConvertFailed = errors.New("convert failed")
)
// IsSystemError checks the error is a system error or not.
func IsSystemError(err error) bool {
return errors.Cause(err) == ErrSystemError
}
// IsURLNotReachable checks the error is a url not reachable or not.
func IsURLNotReachable(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrURLNotReachable)
return ok
}
// IsTaskIDDuplicate checks the error is a TaskIDDuplicate error or not.
func IsTaskIDDuplicate(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrTaskIDDuplicate)
return ok
}
func IsInconsistentValues(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrInconsistentValues)
return ok
}
func IsDownloadFail(err error) bool {
return errors.Cause(err) == ErrTaskDownloadFail
}
func IsResourceExpired(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrResourceExpired)
return ok
}
func IsResourceNotSupportRangeRequest(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrResourceNotSupportRangeRequest)
return ok
}
func IsDataNotFound(err error) bool {
return errors.Cause(err) == ErrDataNotFound
}
func IsInvalidValue(err error) bool {
return errors.Cause(err) == ErrInvalidValue
}
func IsConvertFailed(err error) bool {
return errors.Cause(err) == ErrConvertFailed
}
func IsFileNotExist(err error) bool {
err = errors.Cause(err)
_, ok := err.(ErrFileNotExist)
return ok
}