diff --git a/error.go b/error.go index b734cc4..c4532dc 100644 --- a/error.go +++ b/error.go @@ -22,6 +22,7 @@ const ( // ErrForbidden is returned when the client doesn't have permission to // perform the requested operation. ErrForbidden + ErrBlocked ) func (e ErrorType) Error() string { @@ -40,6 +41,8 @@ func (e ErrorType) String() string { return "rate limited" case ErrForbidden: return "request forbidden" + case ErrBlocked: + return "content blocked" default: return "unknown error code" } diff --git a/http/parse.go b/http/parse.go index ea2d6df..ba14941 100644 --- a/http/parse.go +++ b/http/parse.go @@ -235,6 +235,8 @@ func parseResponse(httpRes *http.Response, req *cmds.Request) (cmds.Response, er e.Code = cmds.ErrRateLimited case http.StatusForbidden: e.Code = cmds.ErrForbidden + case http.StatusGone, http.StatusUnavailableForLegalReasons: + e.Code = cmds.ErrBlocked default: e.Code = cmds.ErrNormal } diff --git a/http/responseemitter.go b/http/responseemitter.go index e5d424e..61c87b0 100644 --- a/http/responseemitter.go +++ b/http/responseemitter.go @@ -238,8 +238,11 @@ func (re *responseEmitter) sendErr(err *cmds.Error) { // Set the status from the error code. status := http.StatusInternalServerError - if err.Code == cmds.ErrClient { + switch err.Code { + case cmds.ErrClient: status = http.StatusBadRequest + case cmds.ErrBlocked: + status = http.StatusUnavailableForLegalReasons } re.w.WriteHeader(status)