/
HTTPUtils
143 lines (87 loc) · 3.76 KB
/
HTTPUtils
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
138
139
140
141
142
143
= module WEBrick::HTTPUtils
HTTP のためのユーティリティ関数を提供します。
== Module Functions
--- load_mime_types(file) -> Hash
Apache の mime.types ファイル形式の file を読み込み
拡張子をキー、MIME タイプを値とするハッシュを返します。キーも値も文字列です。
@param file Apache の mime.types ファイル形式のファイルの名前を文字列で指定します。
require 'webrick'
p WEBrick::HTTPUtils.load_mime_types('/etc/mime.types')
# => {"htm"=>"text/html", "rpm"=>"application/x-rpm", ... }
--- mime_type(filename, mime_tab) -> String
ファイル名 filename の拡張子をもとにその MIME タイプを指定された mime_tab
から探して文字列として返します。MIME タイプが見つからない場合は "application/octet-stream"
を返します。
@param filename ファイル名を文字列で指定します。
@param mime_tab 拡張子をキー、MIME タイプを値とするハッシュを指定します。
require 'webrick'
include WEBrick::HTTPUtils
p mime_type('index.html', DefaultMimeTypes) #=> "text/html"
p mime_type('index.html.ja', DefaultMimeTypes) #=> "text/html"
p mime_type('index.hoge', DefaultMimeTypes) #=> "application/octet-stream"
--- parse_header(raw) -> Hash
HTTP ヘッダをパースして結果をハッシュに格納して返します。
@param raw 生のヘッダを表す文字列を指定します。
--- split_header_value(str) -> Array
HTTP ヘッダの値を分割して返します。
@param str HTTP ヘッダの値を返します。
--- parse_range_header(ranges_specifier)
#@todo ???
@param ranges_specifier
--- dequote(str) -> String
与えられた文字列からダブルクオートとバックスラッシュを削除して返します。
@param str 文字列を指定します。
--- quote(str) -> String
与えられた文字列をダブルクオートでクオートします。
与えられた文字列に含まれているダブルクオートはバックスラッシュでエスケー
プします。
@param str 文字列を指定します。
--- escape(str) -> String
与えられた文字列を数値参照文字列に変換します。
以下の正規表現を使用して変換します。
control = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f"
space = " "
delims = '<>#%"'
unwise = '{}|\\^[]`'
nonascii = (0x80..0xff).collect{|c| c.chr }.join
/[#{Regexp.escape(control + space + delims + unwise + nonascii)}]/n
@param str 文字列を指定します。
--- unescape(str) -> String
与えられた文字列を数値参照文字列から元の文字列に変換します。
@param str 文字列を指定します。
--- escape_path(str) -> String
与えられた文字列を数値参照文字列に変換します。
以下の正規表現を使用して変換します。
num = '0123456789'
lowalpha = 'abcdefghijklmnopqrstuvwxyz'
upalpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
mark = '-_.!~*\'()'
unreserved = num + lowalpha + upalpha + mark
/[^#{Regexp.escape(unreserved + ":@&=+$,")}]/n
@param str 文字列を指定します。
--- escape8bit(str) -> String
与えられた文字列を数値参照文字列に変換します。
@param str 文字列を指定します。
#@#--- normalize_path(path)
#@#todo
#@#--- parse_qvalues(value)
#@#todo
#@#--- escape_form(str)
#@#todo
#@#--- unescape_form(str)
#@#todo
#@#--- _make_regex!(str)
#@#todo
#@#--- _escape(str, regex)
#@#todo
#@#--- _unescape(str, regex)
#@#todo
#@#--- parse_query(str)
#@#todo
#@#--- parse_form_data(io, boundary)
#@#todo
#@#--- _make_regex(str)
#@#todo
== Constants
--- DefaultMimeTypes -> Hash
ファイルの拡張子をキー、 MIME Type を値とする要素を持つハッシュです。