github.com/cavaliergopher/grab/v3@v3.0.1/error.go (about) 1 package grab 2 3 import ( 4 "errors" 5 "fmt" 6 "net/http" 7 ) 8 9 var ( 10 // ErrBadLength indicates that the server response or an existing file does 11 // not match the expected content length. 12 ErrBadLength = errors.New("bad content length") 13 14 // ErrBadChecksum indicates that a downloaded file failed to pass checksum 15 // validation. 16 ErrBadChecksum = errors.New("checksum mismatch") 17 18 // ErrNoFilename indicates that a reasonable filename could not be 19 // automatically determined using the URL or response headers from a server. 20 ErrNoFilename = errors.New("no filename could be determined") 21 22 // ErrNoTimestamp indicates that a timestamp could not be automatically 23 // determined using the response headers from the remote server. 24 ErrNoTimestamp = errors.New("no timestamp could be determined for the remote file") 25 26 // ErrFileExists indicates that the destination path already exists. 27 ErrFileExists = errors.New("file exists") 28 ) 29 30 // StatusCodeError indicates that the server response had a status code that 31 // was not in the 200-299 range (after following any redirects). 32 type StatusCodeError int 33 34 func (err StatusCodeError) Error() string { 35 return fmt.Sprintf("server returned %d %s", err, http.StatusText(int(err))) 36 } 37 38 // IsStatusCodeError returns true if the given error is of type StatusCodeError. 39 func IsStatusCodeError(err error) bool { 40 _, ok := err.(StatusCodeError) 41 return ok 42 }