Remove StatusClass* constants

Re-use the existing Status* constants and adjust StatusClass to return a
valid Status.
This commit is contained in:
Adnan Maolood 2021-02-14 16:01:37 -05:00
parent 7c703e95de
commit 37e5686764
2 changed files with 6 additions and 15 deletions

View File

@ -47,7 +47,7 @@ func ReadResponse(rc io.ReadCloser) (*Response, error) {
// Disregard invalid status codes // Disregard invalid status codes
const minStatus, maxStatus = 1, 6 const minStatus, maxStatus = 1, 6
statusClass := resp.Status / 10 statusClass := StatusClass(status)
if statusClass < minStatus || statusClass > maxStatus { if statusClass < minStatus || statusClass > maxStatus {
return nil, ErrInvalidResponse return nil, ErrInvalidResponse
} }
@ -71,7 +71,7 @@ func ReadResponse(rc io.ReadCloser) (*Response, error) {
return nil, ErrInvalidResponse return nil, ErrInvalidResponse
} }
// Default mime type of text/gemini; charset=utf-8 // Default mime type of text/gemini; charset=utf-8
if statusClass == StatusClassSuccess && meta == "" { if statusClass == StatusSuccess && meta == "" {
meta = "text/gemini; charset=utf-8" meta = "text/gemini; charset=utf-8"
} }
resp.Meta = meta resp.Meta = meta
@ -83,7 +83,7 @@ func ReadResponse(rc io.ReadCloser) (*Response, error) {
return nil, ErrInvalidResponse return nil, ErrInvalidResponse
} }
if resp.Status/10 == StatusClassSuccess { if statusClass == StatusSuccess {
resp.Body = newReadCloserBody(br, rc) resp.Body = newReadCloserBody(br, rc)
} else { } else {
resp.Body = nopReadCloser{} resp.Body = nopReadCloser{}
@ -207,7 +207,7 @@ func (w *responseWriter) writeHeader(defaultStatus int) {
} }
meta := w.meta meta := w.meta
if status/10 == StatusClassSuccess { if StatusClass(status) == StatusSuccess {
w.bodyAllowed = true w.bodyAllowed = true
if meta == "" { if meta == "" {

View File

@ -22,19 +22,10 @@ const (
StatusCertificateNotValid = 62 StatusCertificateNotValid = 62
) )
// Status code categories.
const (
StatusClassInput = 1
StatusClassSuccess = 2
StatusClassRedirect = 3
StatusClassTemporaryFailure = 4
StatusClassPermanentFailure = 5
StatusClassCertificateRequired = 6
)
// StatusClass returns the status class for this status code. // StatusClass returns the status class for this status code.
// 1x becomes 10, 2x becomes 20, etc.
func StatusClass(status int) int { func StatusClass(status int) int {
return status / 10 return (status / 10) * 10
} }
// Meta returns a description of the status code appropriate for use in a response. // Meta returns a description of the status code appropriate for use in a response.