stella 0.3.2 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. data/README.txt +24 -84
  2. data/Rakefile +1 -6
  3. data/doc/classes/Crypto.html +248 -0
  4. data/doc/classes/Crypto/Key.html +308 -0
  5. data/doc/classes/Enumerable.html +309 -0
  6. data/doc/classes/FileUtil.html +310 -0
  7. data/doc/classes/HTTPUtil.html +530 -0
  8. data/doc/classes/MathUtil.html +210 -0
  9. data/doc/classes/Stella.html +238 -0
  10. data/doc/classes/Stella/Adapter.html +127 -0
  11. data/doc/classes/Stella/Adapter/ApacheBench.html +1076 -0
  12. data/doc/classes/Stella/Adapter/Base.html +432 -0
  13. data/doc/classes/Stella/Adapter/CommandNotReady.html +146 -0
  14. data/doc/classes/Stella/Adapter/Httperf.html +949 -0
  15. data/doc/classes/Stella/Adapter/Siege.html +1011 -0
  16. data/doc/classes/Stella/CLI.html +914 -0
  17. data/doc/classes/Stella/CLI/Base.html +186 -0
  18. data/doc/classes/Stella/CLI/Language.html +149 -0
  19. data/doc/classes/Stella/CLI/LocalTest.html +268 -0
  20. data/doc/classes/Stella/Command.html +111 -0
  21. data/doc/classes/Stella/Command/Base.html +335 -0
  22. data/doc/classes/Stella/Config.html +292 -0
  23. data/doc/classes/Stella/InvalidArgument.html +242 -0
  24. data/doc/classes/Stella/LocalTest.html +450 -0
  25. data/doc/classes/Stella/Logger.html +548 -0
  26. data/doc/classes/Stella/Response.html +846 -0
  27. data/doc/classes/Stella/Storable.html +928 -0
  28. data/doc/classes/Stella/Test.html +142 -0
  29. data/doc/classes/Stella/Test/DaySummary.html +249 -0
  30. data/doc/classes/Stella/Test/Definition.html +294 -0
  31. data/doc/classes/Stella/Test/Definition/Rampup.html +215 -0
  32. data/doc/classes/Stella/Test/RunSummary.html +315 -0
  33. data/doc/classes/Stella/Test/SummaryBase.html +286 -0
  34. data/doc/classes/Stella/Test/TestSummary.html +200 -0
  35. data/doc/classes/Stella/Text.html +581 -0
  36. data/doc/classes/Stella/Text/Resource.html +289 -0
  37. data/doc/classes/Stella/UnavailableAdapter.html +242 -0
  38. data/doc/classes/Stella/UnknownValue.html +242 -0
  39. data/doc/classes/Stella/UnsupportedLanguage.html +115 -0
  40. data/doc/classes/Stella/Util.html +348 -0
  41. data/doc/classes/TextGraph.html +460 -0
  42. data/doc/classes/TimerUtil.html +431 -0
  43. data/doc/created.rid +1 -0
  44. data/doc/files/LICENSE_txt.html +129 -0
  45. data/doc/files/README_txt.html +209 -0
  46. data/doc/files/lib/stella/adapter/ab_rb.html +101 -0
  47. data/doc/files/lib/stella/adapter/base_rb.html +101 -0
  48. data/doc/files/lib/stella/adapter/httperf_rb.html +101 -0
  49. data/doc/files/lib/stella/adapter/siege_rb.html +101 -0
  50. data/doc/files/lib/stella/cli/base_rb.html +101 -0
  51. data/doc/files/lib/stella/cli/language_rb.html +101 -0
  52. data/doc/files/lib/stella/cli/localtest_rb.html +101 -0
  53. data/doc/files/lib/stella/cli_rb.html +112 -0
  54. data/doc/files/lib/stella/command/base_rb.html +101 -0
  55. data/doc/files/lib/stella/command/localtest_rb.html +101 -0
  56. data/doc/files/lib/stella/logger_rb.html +101 -0
  57. data/doc/files/lib/stella/response_rb.html +101 -0
  58. data/doc/files/lib/stella/storable_rb.html +109 -0
  59. data/doc/files/lib/stella/support_rb.html +101 -0
  60. data/doc/files/lib/stella/test/daysummary_rb.html +101 -0
  61. data/doc/files/lib/stella/test/definition_rb.html +101 -0
  62. data/doc/files/lib/stella/test/runsummary_rb.html +101 -0
  63. data/doc/files/lib/stella/test/summarybase_rb.html +101 -0
  64. data/doc/files/lib/stella/test/testsummary_rb.html +108 -0
  65. data/doc/files/lib/stella/text/resource_rb.html +108 -0
  66. data/doc/files/lib/stella/text_rb.html +108 -0
  67. data/doc/files/lib/stella_rb.html +128 -0
  68. data/doc/files/lib/utils/crypto-key_rb.html +116 -0
  69. data/doc/files/lib/utils/fileutil_rb.html +108 -0
  70. data/doc/files/lib/utils/httputil_rb.html +110 -0
  71. data/doc/files/lib/utils/mathutil_rb.html +101 -0
  72. data/doc/files/lib/utils/textgraph_rb.html +138 -0
  73. data/doc/files/lib/utils/timerutil_rb.html +108 -0
  74. data/doc/fr_class_index.html +66 -0
  75. data/doc/fr_file_index.html +62 -0
  76. data/doc/fr_method_index.html +309 -0
  77. data/doc/index.html +24 -0
  78. data/doc/rdoc-style.css +208 -0
  79. data/lib/stella.rb +5 -6
  80. data/lib/stella/adapter/ab.rb +4 -31
  81. data/lib/stella/adapter/base.rb +1 -15
  82. data/lib/stella/adapter/httperf.rb +4 -35
  83. data/lib/stella/adapter/siege.rb +29 -51
  84. data/lib/stella/cli.rb +22 -45
  85. data/lib/stella/cli/language.rb +0 -2
  86. data/lib/stella/cli/localtest.rb +0 -5
  87. data/lib/stella/command/base.rb +1 -1
  88. data/lib/stella/command/localtest.rb +68 -84
  89. data/lib/stella/test/daysummary.rb +93 -0
  90. data/lib/stella/test/definition.rb +5 -10
  91. data/lib/stella/test/{run/summary.rb → runsummary.rb} +6 -4
  92. data/lib/stella/test/{base.rb → summarybase.rb} +7 -3
  93. data/lib/stella/test/{summary.rb → testsummary.rb} +29 -27
  94. data/lib/utils/mathutil.rb +34 -36
  95. data/spec/base.rb +26 -0
  96. data/spec/shell_spec.rb +12 -0
  97. data/support/text/en.yaml +1 -7
  98. metadata +102 -8
  99. data/lib/stella/cli/agents.rb +0 -73
  100. data/lib/utils/escape.rb +0 -302
@@ -0,0 +1,530 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: HTTPUtil</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">HTTPUtil</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/utils/httputil_rb.html">
59
+ lib/utils/httputil.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000279">exists</a>&nbsp;&nbsp;
84
+ <a href="#M000277">fetch</a>&nbsp;&nbsp;
85
+ <a href="#M000276">fetch_content</a>&nbsp;&nbsp;
86
+ <a href="#M000283">hash_to_query</a>&nbsp;&nbsp;
87
+ <a href="#M000274">hostname</a>&nbsp;&nbsp;
88
+ <a href="#M000275">normalize</a>&nbsp;&nbsp;
89
+ <a href="#M000280">parse_query</a>&nbsp;&nbsp;
90
+ <a href="#M000278">post</a>&nbsp;&nbsp;
91
+ <a href="#M000282">query_to_hash</a>&nbsp;&nbsp;
92
+ <a href="#M000281">validate_method</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
95
+
96
+ </div>
97
+
98
+
99
+ <!-- if includes -->
100
+
101
+ <div id="section">
102
+
103
+
104
+ <div id="constants-list">
105
+ <h3 class="section-bar">Constants</h3>
106
+
107
+ <div class="name-list">
108
+ <table summary="Constants">
109
+ <tr class="top-aligned-row context-row">
110
+ <td class="context-item-name">VALID_METHODS</td>
111
+ <td>=</td>
112
+ <td class="context-item-value">%w{GET HEAD POST PUT DELETE}</td>
113
+ </tr>
114
+ </table>
115
+ </div>
116
+ </div>
117
+
118
+
119
+
120
+
121
+
122
+
123
+ <!-- if method_list -->
124
+ <div id="methods">
125
+ <h3 class="section-bar">Public Class methods</h3>
126
+
127
+ <div id="method-M000279" class="method-detail">
128
+ <a name="M000279"></a>
129
+
130
+ <div class="method-heading">
131
+ <a href="#M000279" class="method-signature">
132
+ <span class="method-name">exists</span><span class="method-args">(uri)</span>
133
+ </a>
134
+ </div>
135
+
136
+ <div class="method-description">
137
+ <p><a class="source-toggle" href="#"
138
+ onclick="toggleCode('M000279-source');return false;">[Source]</a></p>
139
+ <div class="method-source-code" id="M000279-source">
140
+ <pre>
141
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 133</span>
142
+ 133: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">exists</span>(<span class="ruby-identifier">uri</span>)
143
+ 134:
144
+ 135: <span class="ruby-keyword kw">begin</span>
145
+ 136: <span class="ruby-identifier">response</span> = <span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">uri</span>)
146
+ 137: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">response</span>
147
+ 138: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">true</span>
148
+ 139: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPRedirection</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">response</span>[<span class="ruby-value str">'location'</span>], <span class="ruby-identifier">limit</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
149
+ 140: <span class="ruby-keyword kw">else</span>
150
+ 141: <span class="ruby-keyword kw">false</span>
151
+ 142: <span class="ruby-keyword kw">end</span>
152
+ 143:
153
+ 144: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
154
+ 145: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Problem: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
155
+ 146: <span class="ruby-keyword kw">false</span>
156
+ 147: <span class="ruby-keyword kw">end</span>
157
+ 148:
158
+ 149: <span class="ruby-keyword kw">end</span>
159
+ </pre>
160
+ </div>
161
+ </div>
162
+ </div>
163
+
164
+ <div id="method-M000277" class="method-detail">
165
+ <a name="M000277"></a>
166
+
167
+ <div class="method-heading">
168
+ <a href="#M000277" class="method-signature">
169
+ <span class="method-name">fetch</span><span class="method-args">(uri, limit = 10)</span>
170
+ </a>
171
+ </div>
172
+
173
+ <div class="method-description">
174
+ <p><a class="source-toggle" href="#"
175
+ onclick="toggleCode('M000277-source');return false;">[Source]</a></p>
176
+ <div class="method-source-code" id="M000277-source">
177
+ <pre>
178
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 77</span>
179
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">limit</span> = <span class="ruby-value">10</span>)
180
+ 78:
181
+ 79: <span class="ruby-comment cmt"># You should choose better exception.</span>
182
+ 80: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'HTTP redirect too deep'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
183
+ 81: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;URL: #{uri.to_s}&quot;</span>
184
+ 82: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
185
+ 83:
186
+ 84: <span class="ruby-keyword kw">begin</span>
187
+ 85: <span class="ruby-identifier">timeout</span>(<span class="ruby-ivar">@@timeout</span>) <span class="ruby-keyword kw">do</span>
188
+ 86: <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">uri</span>)
189
+ 87:
190
+ 88:
191
+ 89: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">response</span>
192
+ 90: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">response</span>
193
+ 91: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPRedirection</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">response</span>[<span class="ruby-value str">'location'</span>], <span class="ruby-identifier">limit</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
194
+ 92: <span class="ruby-keyword kw">else</span>
195
+ 93: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Not found: &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span>
196
+ 94: <span class="ruby-keyword kw">end</span>
197
+ 95: <span class="ruby-keyword kw">end</span>
198
+ 96: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TimeoutError</span>
199
+ 97: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Net::HTTP timed out for &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span>
200
+ 98: <span class="ruby-keyword kw">return</span>
201
+ 99: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ex</span>
202
+ 100: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Error: #{ex.message}&quot;</span>
203
+ 101: <span class="ruby-keyword kw">end</span>
204
+ 102:
205
+ 103: <span class="ruby-keyword kw">end</span>
206
+ </pre>
207
+ </div>
208
+ </div>
209
+ </div>
210
+
211
+ <div id="method-M000276" class="method-detail">
212
+ <a name="M000276"></a>
213
+
214
+ <div class="method-heading">
215
+ <a href="#M000276" class="method-signature">
216
+ <span class="method-name">fetch_content</span><span class="method-args">(uri, limit = 10)</span>
217
+ </a>
218
+ </div>
219
+
220
+ <div class="method-description">
221
+ <p><a class="source-toggle" href="#"
222
+ onclick="toggleCode('M000276-source');return false;">[Source]</a></p>
223
+ <div class="method-source-code" id="M000276-source">
224
+ <pre>
225
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 72</span>
226
+ 72: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">fetch_content</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">limit</span> = <span class="ruby-value">10</span>)
227
+ 73: <span class="ruby-identifier">res</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">limit</span>)
228
+ 74: <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">res</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">body</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;&quot;</span>
229
+ 75: <span class="ruby-keyword kw">end</span>
230
+ </pre>
231
+ </div>
232
+ </div>
233
+ </div>
234
+
235
+ <div id="method-M000283" class="method-detail">
236
+ <a name="M000283"></a>
237
+
238
+ <div class="method-heading">
239
+ <a href="#M000283" class="method-signature">
240
+ <span class="method-name">hash_to_query</span><span class="method-args">(parameters)</span>
241
+ </a>
242
+ </div>
243
+
244
+ <div class="method-description">
245
+ <p><a class="source-toggle" href="#"
246
+ onclick="toggleCode('M000283-source');return false;">[Source]</a></p>
247
+ <div class="method-source-code" id="M000283-source">
248
+ <pre>
249
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 198</span>
250
+ 198: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">hash_to_query</span>(<span class="ruby-identifier">parameters</span>)
251
+ 199: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">parameters</span>
252
+ 200: <span class="ruby-identifier">pairs</span> = []
253
+ 201: <span class="ruby-identifier">parameters</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">param</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
254
+ 202: <span class="ruby-identifier">pairs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{param}=#{URI.escape(value.to_s)}&quot;</span>
255
+ 203: <span class="ruby-keyword kw">end</span>
256
+ 204: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">pairs</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'&amp;'</span>)
257
+ 205: <span class="ruby-comment cmt">#return pairs.join(&quot;;&quot;)</span>
258
+ 206: <span class="ruby-keyword kw">end</span>
259
+ </pre>
260
+ </div>
261
+ </div>
262
+ </div>
263
+
264
+ <div id="method-M000274" class="method-detail">
265
+ <a name="M000274"></a>
266
+
267
+ <div class="method-heading">
268
+ <a href="#M000274" class="method-signature">
269
+ <span class="method-name">hostname</span><span class="method-args">(tmp_uri)</span>
270
+ </a>
271
+ </div>
272
+
273
+ <div class="method-description">
274
+ <p><a class="source-toggle" href="#"
275
+ onclick="toggleCode('M000274-source');return false;">[Source]</a></p>
276
+ <div class="method-source-code" id="M000274-source">
277
+ <pre>
278
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 9</span>
279
+ 9: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">hostname</span>(<span class="ruby-identifier">tmp_uri</span>)
280
+ 10: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tmp_uri</span>.<span class="ruby-identifier">empty?</span>
281
+ 11: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">tmp_uri</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tmp_uri</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
282
+ 12:
283
+ 13: <span class="ruby-comment cmt">#STDERR.puts &quot;Hostname for #{ uri.port }&quot;</span>
284
+ 14: <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>
285
+ 15: <span class="ruby-keyword kw">end</span>
286
+ </pre>
287
+ </div>
288
+ </div>
289
+ </div>
290
+
291
+ <div id="method-M000275" class="method-detail">
292
+ <a name="M000275"></a>
293
+
294
+ <div class="method-heading">
295
+ <a href="#M000275" class="method-signature">
296
+ <span class="method-name">normalize</span><span class="method-args">(uri_str, scheme = true)</span>
297
+ </a>
298
+ </div>
299
+
300
+ <div class="method-description">
301
+ <p>
302
+ Normalize all URIs before they are used for anything else
303
+ </p>
304
+ <p><a class="source-toggle" href="#"
305
+ onclick="toggleCode('M000275-source');return false;">[Source]</a></p>
306
+ <div class="method-source-code" id="M000275-source">
307
+ <pre>
308
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 18</span>
309
+ 18: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">normalize</span>(<span class="ruby-identifier">uri_str</span>, <span class="ruby-identifier">scheme</span> = <span class="ruby-keyword kw">true</span>)
310
+ 19:
311
+ 20:
312
+ 21: <span class="ruby-comment cmt">#STDERR.puts &quot; BEFORE: &quot; &lt;&lt; uri_str</span>
313
+ 22: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">uri_str</span>.<span class="ruby-identifier">index</span>(<span class="ruby-regexp re">/^https?:\/\//</span>))
314
+ 23: <span class="ruby-identifier">uri_str</span> = <span class="ruby-value str">'http://'</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri_str</span>
315
+ 24: <span class="ruby-keyword kw">end</span>
316
+ 25: <span class="ruby-comment cmt">#STDERR.puts &quot; AFTER: &quot; &lt;&lt; uri_str</span>
317
+ 26:
318
+ 27: <span class="ruby-identifier">uri_str</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/\s/</span>, <span class="ruby-value str">'%20'</span>)
319
+ 28:
320
+ 29: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri_str</span>)
321
+ 30:
322
+ 31: <span class="ruby-identifier">uri_clean</span> = <span class="ruby-value str">&quot;&quot;</span>
323
+ 32:
324
+ 33: <span class="ruby-comment cmt"># TODO: use URI.to_s instead of manually creating the string</span>
325
+ 34:
326
+ 35: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">scheme</span>)
327
+ 36: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'://'</span>
328
+ 37: <span class="ruby-keyword kw">end</span>
329
+ 38:
330
+ 39:
331
+ 40: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">userinfo</span>.<span class="ruby-identifier">nil?</span>)
332
+ 41: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">userinfo</span>.<span class="ruby-identifier">to_s</span>
333
+ 42: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'@'</span>
334
+ 43: <span class="ruby-keyword kw">end</span>
335
+ 44:
336
+ 45: <span class="ruby-comment cmt">#uri.host.gsub!(/^www\./, '')</span>
337
+ 46:
338
+ 47: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>.<span class="ruby-identifier">to_s</span>
339
+ 48:
340
+ 49: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">!=</span> <span class="ruby-value">80</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">!=</span> <span class="ruby-value">443</span>)
341
+ 50: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>.<span class="ruby-identifier">to_s</span>
342
+ 51: <span class="ruby-keyword kw">end</span>
343
+ 52:
344
+ 53:
345
+ 54:
346
+ 55: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">empty?</span>)
347
+ 56: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>
348
+ 57: <span class="ruby-keyword kw">elsif</span>
349
+ 58: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'/'</span>
350
+ 59: <span class="ruby-keyword kw">end</span>
351
+ 60:
352
+ 61:
353
+ 62: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">empty?</span>)
354
+ 63: <span class="ruby-identifier">uri_clean</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;?&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span>
355
+ 64: <span class="ruby-keyword kw">end</span>
356
+ 65:
357
+ 66: <span class="ruby-comment cmt">#STDERR.puts &quot;IN: &quot; &lt;&lt; uri_str</span>
358
+ 67: <span class="ruby-comment cmt">#STDERR.puts &quot;OUT: &quot; &lt;&lt; uri_clean</span>
359
+ 68:
360
+ 69: <span class="ruby-identifier">uri_clean</span>
361
+ 70: <span class="ruby-keyword kw">end</span>
362
+ </pre>
363
+ </div>
364
+ </div>
365
+ </div>
366
+
367
+ <div id="method-M000280" class="method-detail">
368
+ <a name="M000280"></a>
369
+
370
+ <div class="method-heading">
371
+ <a href="#M000280" class="method-signature">
372
+ <span class="method-name">parse_query</span><span class="method-args">(query)</span>
373
+ </a>
374
+ </div>
375
+
376
+ <div class="method-description">
377
+ <p><a class="source-toggle" href="#"
378
+ onclick="toggleCode('M000280-source');return false;">[Source]</a></p>
379
+ <div class="method-source-code" id="M000280-source">
380
+ <pre>
381
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 151</span>
382
+ 151: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">parse_query</span>(<span class="ruby-identifier">query</span>)
383
+ 152: <span class="ruby-identifier">params</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>([].<span class="ruby-identifier">freeze</span>)
384
+ 153:
385
+ 154: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/[&amp;;]/n</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pairs</span><span class="ruby-operator">|</span>
386
+ 155: <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span> = <span class="ruby-identifier">pairs</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>,<span class="ruby-value">2</span>).<span class="ruby-identifier">collect</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-constant">URI</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">v</span>) }
387
+ 156: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
388
+ 157: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">key</span>].<span class="ruby-identifier">push</span>(<span class="ruby-identifier">value</span>)
389
+ 158: <span class="ruby-keyword kw">else</span>
390
+ 159: <span class="ruby-identifier">params</span>[<span class="ruby-identifier">key</span>] = [<span class="ruby-identifier">value</span>]
391
+ 160: <span class="ruby-keyword kw">end</span>
392
+ 161: <span class="ruby-keyword kw">end</span>
393
+ 162:
394
+ 163: <span class="ruby-identifier">params</span>
395
+ 164: <span class="ruby-keyword kw">end</span>
396
+ </pre>
397
+ </div>
398
+ </div>
399
+ </div>
400
+
401
+ <div id="method-M000278" class="method-detail">
402
+ <a name="M000278"></a>
403
+
404
+ <div class="method-heading">
405
+ <a href="#M000278" class="method-signature">
406
+ <span class="method-name">post</span><span class="method-args">(uri, params = {}, limit = 10)</span>
407
+ </a>
408
+ </div>
409
+
410
+ <div class="method-description">
411
+ <p><a class="source-toggle" href="#"
412
+ onclick="toggleCode('M000278-source');return false;">[Source]</a></p>
413
+ <div class="method-source-code" id="M000278-source">
414
+ <pre>
415
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 105</span>
416
+ 105: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">post</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">params</span> = {}, <span class="ruby-identifier">limit</span> = <span class="ruby-value">10</span>)
417
+ 106:
418
+ 107: <span class="ruby-comment cmt"># You should choose better exception.</span>
419
+ 108: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'HTTP redirect too deep'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
420
+ 109:
421
+ 110: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
422
+ 111:
423
+ 112: <span class="ruby-keyword kw">begin</span>
424
+ 113: <span class="ruby-identifier">timeout</span>(<span class="ruby-ivar">@@timeout</span>) <span class="ruby-keyword kw">do</span>
425
+ 114: <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">post_form</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">params</span>)
426
+ 115:
427
+ 116: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">response</span>
428
+ 117: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">response</span>
429
+ 118: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPRedirection</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">response</span>[<span class="ruby-value str">'location'</span>], <span class="ruby-identifier">limit</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
430
+ 119: <span class="ruby-keyword kw">else</span>
431
+ 120: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Error for &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span>
432
+ 121: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>
433
+ 122: <span class="ruby-keyword kw">end</span>
434
+ 123: <span class="ruby-keyword kw">end</span>
435
+ 124: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TimeoutError</span>
436
+ 125: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Net::HTTP timed out for &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span>
437
+ 126: <span class="ruby-keyword kw">return</span>
438
+ 127: <span class="ruby-keyword kw">end</span>
439
+ 128:
440
+ 129:
441
+ 130:
442
+ 131: <span class="ruby-keyword kw">end</span>
443
+ </pre>
444
+ </div>
445
+ </div>
446
+ </div>
447
+
448
+ <div id="method-M000282" class="method-detail">
449
+ <a name="M000282"></a>
450
+
451
+ <div class="method-heading">
452
+ <a href="#M000282" class="method-signature">
453
+ <span class="method-name">query_to_hash</span><span class="method-args">(query_string)</span>
454
+ </a>
455
+ </div>
456
+
457
+ <div class="method-description">
458
+ <p>
459
+ Extend the basic query string parser provided by the cgi module. converts
460
+ single valued params (the most common case) to objects instead of arrays
461
+ </p>
462
+ <p>
463
+ Input: the query string
464
+ </p>
465
+ <p>
466
+ Output: hash of parameters, contains arrays for multivalued parameters
467
+ (multiselect, checkboxes , etc) If no query string is provided (nil or
468
+ &quot;&quot;) returns an empty hash.
469
+ </p>
470
+ <p><a class="source-toggle" href="#"
471
+ onclick="toggleCode('M000282-source');return false;">[Source]</a></p>
472
+ <div class="method-source-code" id="M000282-source">
473
+ <pre>
474
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 182</span>
475
+ 182: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">query_to_hash</span>(<span class="ruby-identifier">query_string</span>)
476
+ 183: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">query_string</span>
477
+ 184:
478
+ 185: <span class="ruby-identifier">query_parameters</span> = <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">parse_query</span>(<span class="ruby-identifier">query_string</span>)
479
+ 186:
480
+ 187: <span class="ruby-identifier">query_parameters</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
481
+ 188: <span class="ruby-comment cmt"># replace the array with an object</span>
482
+ 189: <span class="ruby-identifier">query_parameters</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">length</span>
483
+ 190: }
484
+ 191:
485
+ 192: <span class="ruby-comment cmt"># set default value to nil! cgi sets this to []</span>
486
+ 193: <span class="ruby-identifier">query_parameters</span>.<span class="ruby-identifier">default</span> = <span class="ruby-keyword kw">nil</span>
487
+ 194:
488
+ 195: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">query_parameters</span>
489
+ 196: <span class="ruby-keyword kw">end</span>
490
+ </pre>
491
+ </div>
492
+ </div>
493
+ </div>
494
+
495
+ <div id="method-M000281" class="method-detail">
496
+ <a name="M000281"></a>
497
+
498
+ <div class="method-heading">
499
+ <a href="#M000281" class="method-signature">
500
+ <span class="method-name">validate_method</span><span class="method-args">(meth='GET')</span>
501
+ </a>
502
+ </div>
503
+
504
+ <div class="method-description">
505
+ <p><a class="source-toggle" href="#"
506
+ onclick="toggleCode('M000281-source');return false;">[Source]</a></p>
507
+ <div class="method-source-code" id="M000281-source">
508
+ <pre>
509
+ <span class="ruby-comment cmt"># File lib/utils/httputil.rb, line 166</span>
510
+ 166: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">HTTPUtil</span>.<span class="ruby-identifier">validate_method</span>(<span class="ruby-identifier">meth</span>=<span class="ruby-value str">'GET'</span>)
511
+ 167: <span class="ruby-identifier">meth</span> = (<span class="ruby-constant">VALID_METHODS</span>.<span class="ruby-identifier">member?</span> <span class="ruby-identifier">meth</span>.<span class="ruby-identifier">upcase</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">meth</span> <span class="ruby-operator">:</span> <span class="ruby-constant">VALID_METHODS</span>[<span class="ruby-value">0</span>]
512
+ 168: <span class="ruby-keyword kw">end</span>
513
+ </pre>
514
+ </div>
515
+ </div>
516
+ </div>
517
+
518
+
519
+ </div>
520
+
521
+
522
+ </div>
523
+
524
+
525
+ <div id="validator-badges">
526
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
527
+ </div>
528
+
529
+ </body>
530
+ </html>