-
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathhttpstatus
More file actions
executable file
·137 lines (130 loc) · 3.48 KB
/
httpstatus
File metadata and controls
executable file
·137 lines (130 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/sh
##
## httpstatus.sh で、HTTP のステータスコードをすばやくしらべる!
## by SATOH Fumiyasu @ OSS Technology Corp., Japan
## <https://GitHub.com/fumiyas/>
## <https://twitter.com/satoh_fumiyasu>
##
## 一般的な Web Programmer ならば、HTTP Status code はすべて
## 暗記していると聞きました。
##
## しかし、僕は初心者なので、なかなか覚えきれていないので、
## HTTPのステータスコードをさがすのに便利なツールを用意しました。
## httpstatus.sh です。インストール方法は適当なディレクトリに
## 放り込んで chmod +x してください。
##
## 今日の参考文献:
## http://blog.64p.org/entry/2013/02/21/121830
##
## 類似品:
## http://mattn.kaoriya.net/software/vim/20130221123856.htm
## http://yuroyoro.hatenablog.com/entry/2013/02/21/144004
## http://d.hatena.ne.jp/hasegawayosuke/20130221/p1
## http://blog.yappo.jp/yappo/archives/000805.html
set -u
data_latest() {
curl \
--silent \
--fail-with-body \
--show-error \
--location \
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes \
|sed -E -n \
-e '/Unofficial codes<\/h[1-6]>/,$d' \
-e 's!^<dl>!!' \
-e 's!</dt>(</dl>)?$!!' \
-e 's!</span>(<span [^>]+></span>)* ?!!' \
-e 's!<a [^>]+>([^<]+)</a>!\1!g' \
-e 's!^<dt><span class="anchor" id="([1-5][0-9][0-9])">\1 ([^<(]+)!\1 \2!p' \
|sed 's/"/'"'"'/g' \
;
}
if [ "${1-}" = "--update-data" ]; then
sed -i "/^cat <<'__DATA__'"'$/,$d' "$0"
{
echo "cat <<'__DATA__'"
data_latest
echo '__DATA__'
} >> "$0"
exit 0
fi
key="$*"
case "$key" in
[1-5][0-9][0-9])
re="^$key "
;;
[1-5][0-9]|[1-5])
re="^$key"
;;
*)
re="$key"
;;
esac
sed -e "1,/^cat <<'__DATA__'"'$/d' -e '$d' <"$0"|grep -i -- "$re"
exit $?
# shellcheck disable=SC2317 # Command appears to be unreachable
cat <<'__DATA__'
100 Continue
101 Switching Protocols
102 Processing (WebDAV; RFC 2518)
103 Early Hints (RFC 8297)
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information (since HTTP/1.1)
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status (WebDAV; RFC 4918)
208 Already Reported (WebDAV; RFC 5842)
226 IM Used (RFC 3229)
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other (since HTTP/1.1)
304 Not Modified
305 Use Proxy (since HTTP/1.1)
306 Switch Proxy
307 Temporary Redirect (since HTTP/1.1)
308 Permanent 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 Content Too Large
414 URI Too Long
415 Unsupported Media Type
416 Range Not Satisfiable
417 Expectation Failed
418 I'm a teapot (RFC 2324, RFC 7168)
421 Misdirected Request
422 Unprocessable Content
423 Locked (WebDAV; RFC 4918)
424 Failed Dependency (WebDAV; RFC 4918)
425 Too Early (RFC 8470)
426 Upgrade Required
428 Precondition Required (RFC 6585)
429 Too Many Requests (RFC 6585)
431 Request Header Fields Too Large (RFC 6585)
451 Unavailable For Legal Reasons (RFC 7725)
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 (WebDAV; RFC 4918)
508 Loop Detected (WebDAV; RFC 5842)
510 Not Extended (RFC 2774)
511 Network Authentication Required (RFC 6585)
__DATA__