github.com/adityamillind98/moby@v23.0.0-rc.4+incompatible/errdefs/http_helpers.go (about)

     1  package errdefs // import "github.com/docker/docker/errdefs"
     2  
     3  import (
     4  	"net/http"
     5  )
     6  
     7  // FromStatusCode creates an errdef error, based on the provided HTTP status-code
     8  func FromStatusCode(err error, statusCode int) error {
     9  	if err == nil {
    10  		return nil
    11  	}
    12  	switch statusCode {
    13  	case http.StatusNotFound:
    14  		err = NotFound(err)
    15  	case http.StatusBadRequest:
    16  		err = InvalidParameter(err)
    17  	case http.StatusConflict:
    18  		err = Conflict(err)
    19  	case http.StatusUnauthorized:
    20  		err = Unauthorized(err)
    21  	case http.StatusServiceUnavailable:
    22  		err = Unavailable(err)
    23  	case http.StatusForbidden:
    24  		err = Forbidden(err)
    25  	case http.StatusNotModified:
    26  		err = NotModified(err)
    27  	case http.StatusNotImplemented:
    28  		err = NotImplemented(err)
    29  	case http.StatusInternalServerError:
    30  		if !IsSystem(err) && !IsUnknown(err) && !IsDataLoss(err) && !IsDeadline(err) && !IsCancelled(err) {
    31  			err = System(err)
    32  		}
    33  	default:
    34  		switch {
    35  		case statusCode >= 200 && statusCode < 400:
    36  			// it's a client error
    37  		case statusCode >= 400 && statusCode < 500:
    38  			err = InvalidParameter(err)
    39  		case statusCode >= 500 && statusCode < 600:
    40  			err = System(err)
    41  		default:
    42  			err = Unknown(err)
    43  		}
    44  	}
    45  	return err
    46  }