Skip to content

Instantly share code, notes, and snippets.

@waltarix
Created February 24, 2013 09:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save waltarix/5023212 to your computer and use it in GitHub Desktop.
Save waltarix/5023212 to your computer and use it in GitHub Desktop.
implementation of httpstatus in zsh
function httpstatus {
local -A statuscode
statuscode=(
100 'Continue'
101 'Switching Protocols'
102 'Processing' # RFC 2518 (WebDAV)
200 'OK'
201 'Created'
202 'Accepted'
203 'Non-Authoritative Information'
204 'No Content'
205 'Reset Content'
206 'Partial Content'
207 'Multi-Status' # RFC 2518 (WebDAV)
208 'Already Reported' # RFC 5842
300 'Multiple Choices'
301 'Moved Permanently'
302 'Found'
303 'See Other'
304 'Not Modified'
305 'Use Proxy'
307 'Temporary Redirect'
400 'Bad Request'
401 'Unauthorized'
402 'Payment Required'
403 'Forbidden'
404 'Not Found'
405 'Method Not Allowed'
406 'Not Acceptable'
407 'Proxy Authentication Required'
408 'Request Timeout'
409 'Conflict'
410 'Gone'
411 'Length Required'
412 'Precondition Failed'
413 'Request Entity Too Large'
414 'Request-URI Too Large'
415 'Unsupported Media Type'
416 'Request Range Not Satisfiable'
417 'Expectation Failed'
418 'I'\''m a teapot' # RFC 2324
422 'Unprocessable Entity' # RFC 2518 (WebDAV)
423 'Locked' # RFC 2518 (WebDAV)
424 'Failed Dependency' # RFC 2518 (WebDAV)
425 'No code' # WebDAV Advanced Collections
426 'Upgrade Required' # RFC 2817
428 'Precondition Required'
429 'Too Many Requests'
431 'Request Header Fields Too Large'
449 'Retry with' # unofficial Microsoft
500 'Internal Server Error'
501 'Not Implemented'
502 'Bad Gateway'
503 'Service Unavailable'
504 'Gateway Timeout'
505 'HTTP Version Not Supported'
506 'Variant Also Negotiates' # RFC 2295
507 'Insufficient Storage' # RFC 2518 (WebDAV)
509 'Bandwidth Limit Exceeded' # unofficial
510 'Not Extended' # RFC 2774
511 'Network Authentication Required'
)
if [[ $# == 1 ]]; then
local key=$1 msg
if [[ -n ${msg::=$statuscode[$key]} ]]; then
printf "%s\n" $msg
elif [[ $key =~ "^[1-5]" ]]; then
for k (${(ok)statuscode[(I)$key*]}) printf "%s %s\n" $k $statuscode[$k]
else
for k (${(ok)statuscode[(R)$key*]}) printf "%s %s\n" $k $statuscode[$k]
fi
else
for k (${(ok)statuscode}) printf "%s %s\n" $k $statuscode[$k]
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment