Skip to content

Instantly share code, notes, and snippets.

@tk0miya
Last active December 14, 2015 00:59
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 tk0miya/5002917 to your computer and use it in GitHub Desktop.
Save tk0miya/5002917 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import re
import sys
from collections import namedtuple
Status = namedtuple('Status', 'code message')
status_list = [
Status("100", "Continue"),
Status("101", "Switching Protocols"),
Status("102", "Processing"),
Status("200", "OK"),
Status("201", "Created"),
Status("202", "Accepted"),
Status("203", "Non-Authoritative Information"),
Status("204", "No Content"),
Status("205", "Reset Content"),
Status("206", "Partial Content"),
Status("207", "Multi-Status"),
Status("208", "Already Reported"),
Status("300", "Multiple Choices"),
Status("301", "Moved Permanently"),
Status("302", "Found"),
Status("303", "See Other"),
Status("304", "Not Modified"),
Status("305", "Use Proxy"),
Status("307", "Temporary Redirect"),
Status("400", "Bad Request"),
Status("401", "Unauthorized"),
Status("402", "Payment Required"),
Status("403", "Forbidden"),
Status("404", "Not Found"),
Status("405", "Method Not Allowed"),
Status("406", "Not Acceptable"),
Status("407", "Proxy Authentication Required"),
Status("408", "Request Timeout"),
Status("409", "Conflict"),
Status("410", "Gone"),
Status("411", "Length Required"),
Status("412", "Precondition Failed"),
Status("413", "Request Entity Too Large"),
Status("414", "Request-URI Too Large"),
Status("415", "Unsupported Media Type"),
Status("416", "Request Range Not Satisfiable"),
Status("417", "Expectation Failed"),
Status("418", "I'm a teapot"),
Status("422", "Unprocessable Entity"),
Status("423", "Locked"),
Status("424", "Failed Dependency"),
Status("425", "No code"),
Status("426", "Upgrade Required"),
Status("428", "Precondition Required"),
Status("429", "Too Many Requests"),
Status("431", "Request Header Fields Too Large"),
Status("449", "Retry with"),
Status("500", "Internal Server Error"),
Status("501", "Not Implemented"),
Status("502", "Bad Gateway"),
Status("503", "Service Unavailable"),
Status("504", "Gateway Timeout"),
Status("505", "HTTP Version Not Supported"),
Status("506", "Variant Also Negotiates"),
Status("507", "Insufficient Storage"),
Status("509", "Bandwidth Limit Exceeded"),
Status("510", "Not Extended"),
Status("511", "Network Authentication Required"),
]
def main():
if len(sys.argv) == 1:
print "Usage: httpstatus.py [code]"
return
else:
for code in sys.argv[1:]:
if re.match("^\d+$", code):
pattern = re.compile("^" + str(code))
matches = [s for s in status_list if pattern.match(s.code)]
else:
pattern = re.compile(code.decode('utf-8'), re.I)
matches = [s for s in status_list if pattern.search(s.message)]
if matches:
for status in matches:
print "Status %s: %s" % (status.code, status.message.encode('utf-8'))
else:
print "No HTTP Status found."
if __name__ == '__main__':
main()
# -*- coding: utf-8 -*-
import httpstatus
from httpstatus import Status
# http://lestrrat.ldblog.jp/archives/23208854.html
httpstatus.status_list = [
Status("200", u"認証成功"),
Status("201", u"認証は成功したが、End Pointがよそに愛人を作成した (bulkneets)"),
Status("202", u"認証は成功したが、本文内容は「勝手にすれば?(次回の認証は失敗する可能性が高い) 」 (Yappo)"),
Status("204", u"認証は成功したが、無言(次回の認証は失敗する可能性が高い)"),
Status("300", u"無効。選択肢が複数存在する。例:1. 大人しく帰ってきて無傷、2. 後で見返りを提示する、3. あとで半殺し (zigorou)"),
Status("302", u"無効。成功とも失敗とも言えない。"),
Status("305", u"無効。第三者の仲介を必要とします。(bulkneets)"),
Status("400", u"認証失敗(そもそも認証という行為を否定)。End Pointが鬼嫁だった場合等 (Yappo)"),
Status("401", u"認証失敗。愛人への認証を嫁に出していませんか?(Yappo)"),
Status("402", u"認証は一応成功だが、後で罰金、もしくはプレゼントをEnd Pointに渡さないとretroactiveに認証拒否。(daiba / otsune)"),
Status("403", u"認証失敗。"),
Status("404", u"認証失敗が続いたため、End Pointが実家に帰った、等"),
Status("406", u"認証失敗。着信拒否されました(Yappo)"),
Status("409", u"認証失敗。End Pointは現在間男に夢中 (tokuhirom) もしくはホストクラブに夢中 (daiba)"),
Status("410", u"無効。End Pointは知らない間にいなくなった (acotie)"),
Status("411", u"認証失敗。いつまでに帰ってくるか明示しなさい (zigorou)"),
Status("412", u"認証失敗。そもそも彼女も嫁もいません。"),
Status("413", u"無効。あうぅ。こんなおっきなりくえすとはいらないよぉ・・・(Yappo)"),
Status("414", u"無効。あうぅ。こんなおっきなURIはいらないよぉ・・・(Yappo)"),
Status("423", u"認証失敗。クレジットカードがロックされました (Yappo) 実装はWebDAV経由での操作の場合のみ。"),
Status("500", u"認証失敗。なお、家に入れない可能性が高い。"),
Status("502", u"認証失敗。認証方法がよくありません。セックス中に再度認証してみてください (Yappo)"),
Status("507", u"認証失敗。あんた今そんなにお金持ってないんだから許せるわけないでしょ! (zigorou)"),
]
httpstatus.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment