rfuzz 0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/COPYING +55 -0
  2. data/LICENSE +55 -0
  3. data/README +252 -0
  4. data/Rakefile +48 -0
  5. data/doc/rdoc/classes/RFuzz.html +146 -0
  6. data/doc/rdoc/classes/RFuzz/HttpClient.html +481 -0
  7. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +24 -0
  8. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html +34 -0
  9. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +49 -0
  10. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +49 -0
  11. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +57 -0
  12. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +37 -0
  13. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html +26 -0
  14. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html +34 -0
  15. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html +18 -0
  16. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +26 -0
  17. data/doc/rdoc/classes/RFuzz/HttpEncoding.html +294 -0
  18. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +26 -0
  19. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +18 -0
  20. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +26 -0
  21. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +18 -0
  22. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +32 -0
  23. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +18 -0
  24. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +20 -0
  25. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +20 -0
  26. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +32 -0
  27. data/doc/rdoc/classes/RFuzz/HttpResponse.html +180 -0
  28. data/doc/rdoc/classes/RFuzz/Notifier.html +252 -0
  29. data/doc/rdoc/classes/RFuzz/Notifier.src/M000044.html +17 -0
  30. data/doc/rdoc/classes/RFuzz/Notifier.src/M000045.html +17 -0
  31. data/doc/rdoc/classes/RFuzz/Notifier.src/M000046.html +17 -0
  32. data/doc/rdoc/classes/RFuzz/Notifier.src/M000047.html +17 -0
  33. data/doc/rdoc/classes/RFuzz/Notifier.src/M000048.html +17 -0
  34. data/doc/rdoc/classes/RFuzz/Notifier.src/M000049.html +17 -0
  35. data/doc/rdoc/classes/RFuzz/RandomGenerator.html +362 -0
  36. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000032.html +21 -0
  37. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000033.html +23 -0
  38. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000036.html +22 -0
  39. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000037.html +20 -0
  40. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000038.html +22 -0
  41. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000039.html +20 -0
  42. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000040.html +18 -0
  43. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000041.html +18 -0
  44. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000042.html +22 -0
  45. data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000043.html +18 -0
  46. data/doc/rdoc/classes/RFuzz/Sampler.html +383 -0
  47. data/doc/rdoc/classes/RFuzz/Sampler.src/M000056.html +19 -0
  48. data/doc/rdoc/classes/RFuzz/Sampler.src/M000057.html +23 -0
  49. data/doc/rdoc/classes/RFuzz/Sampler.src/M000058.html +26 -0
  50. data/doc/rdoc/classes/RFuzz/Sampler.src/M000059.html +18 -0
  51. data/doc/rdoc/classes/RFuzz/Sampler.src/M000060.html +18 -0
  52. data/doc/rdoc/classes/RFuzz/Sampler.src/M000061.html +18 -0
  53. data/doc/rdoc/classes/RFuzz/Sampler.src/M000062.html +18 -0
  54. data/doc/rdoc/classes/RFuzz/Sampler.src/M000063.html +19 -0
  55. data/doc/rdoc/classes/RFuzz/Sampler.src/M000064.html +18 -0
  56. data/doc/rdoc/classes/RFuzz/Sampler.src/M000065.html +23 -0
  57. data/doc/rdoc/classes/RFuzz/Sampler.src/M000066.html +18 -0
  58. data/doc/rdoc/classes/RFuzz/Sampler.src/M000067.html +20 -0
  59. data/doc/rdoc/classes/RFuzz/Session.html +415 -0
  60. data/doc/rdoc/classes/RFuzz/Session.src/M000020.html +31 -0
  61. data/doc/rdoc/classes/RFuzz/Session.src/M000021.html +18 -0
  62. data/doc/rdoc/classes/RFuzz/Session.src/M000022.html +18 -0
  63. data/doc/rdoc/classes/RFuzz/Session.src/M000023.html +34 -0
  64. data/doc/rdoc/classes/RFuzz/Session.src/M000024.html +19 -0
  65. data/doc/rdoc/classes/RFuzz/Session.src/M000025.html +19 -0
  66. data/doc/rdoc/classes/RFuzz/Session.src/M000026.html +26 -0
  67. data/doc/rdoc/classes/RFuzz/Session.src/M000027.html +29 -0
  68. data/doc/rdoc/classes/RFuzz/Session.src/M000028.html +19 -0
  69. data/doc/rdoc/classes/RFuzz/Session.src/M000029.html +18 -0
  70. data/doc/rdoc/classes/RFuzz/Session.src/M000030.html +18 -0
  71. data/doc/rdoc/classes/RFuzz/Session.src/M000031.html +23 -0
  72. data/doc/rdoc/classes/RFuzz/StatsTracker.html +242 -0
  73. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000050.html +19 -0
  74. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000051.html +19 -0
  75. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000052.html +18 -0
  76. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000053.html +18 -0
  77. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000054.html +28 -0
  78. data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000055.html +18 -0
  79. data/doc/rdoc/created.rid +1 -0
  80. data/doc/rdoc/files/COPYING.html +168 -0
  81. data/doc/rdoc/files/LICENSE.html +168 -0
  82. data/doc/rdoc/files/README.html +473 -0
  83. data/doc/rdoc/files/lib/rfuzz/client_rb.html +111 -0
  84. data/doc/rdoc/files/lib/rfuzz/random_rb.html +116 -0
  85. data/doc/rdoc/files/lib/rfuzz/rfuzz_rb.html +109 -0
  86. data/doc/rdoc/files/lib/rfuzz/session_rb.html +111 -0
  87. data/doc/rdoc/files/lib/rfuzz/stats_rb.html +113 -0
  88. data/doc/rdoc/fr_class_index.html +35 -0
  89. data/doc/rdoc/fr_file_index.html +34 -0
  90. data/doc/rdoc/fr_method_index.html +93 -0
  91. data/doc/rdoc/index.html +24 -0
  92. data/doc/rdoc/rdoc-style.css +208 -0
  93. data/examples/amazon_headers.rb +38 -0
  94. data/examples/hpricot_pudding.rb +22 -0
  95. data/examples/kill_routes.rb +26 -0
  96. data/examples/mongrel_test_suite/lib/gen.rb +24 -0
  97. data/examples/mongrel_test_suite/test/camping/static_files.rb +9 -0
  98. data/examples/mongrel_test_suite/test/camping/upload_file.rb +9 -0
  99. data/examples/mongrel_test_suite/test/camping/upload_progress.rb +9 -0
  100. data/examples/mongrel_test_suite/test/http/base_protocol.rb +23 -0
  101. data/examples/mongrel_test_suite/test/nitro/upload_file.rb +9 -0
  102. data/examples/mongrel_test_suite/test/nitro/upload_progress.rb +9 -0
  103. data/examples/mongrel_test_suite/test/rails/static_files.rb +9 -0
  104. data/examples/mongrel_test_suite/test/rails/upload_file.rb +9 -0
  105. data/examples/mongrel_test_suite/test/rails/upload_progress.rb +9 -0
  106. data/examples/perftest.rb +30 -0
  107. data/ext/fuzzrnd/ext_help.h +14 -0
  108. data/ext/fuzzrnd/extconf.rb +6 -0
  109. data/ext/fuzzrnd/fuzzrnd.c +149 -0
  110. data/ext/http11_client/ext_help.h +14 -0
  111. data/ext/http11_client/extconf.rb +6 -0
  112. data/ext/http11_client/http11_client.c +288 -0
  113. data/ext/http11_client/http11_parser.c +629 -0
  114. data/ext/http11_client/http11_parser.h +46 -0
  115. data/ext/http11_client/http11_parser.rl +169 -0
  116. data/lib/rfuzz/client.rb +498 -0
  117. data/lib/rfuzz/random.rb +110 -0
  118. data/lib/rfuzz/rfuzz.rb +12 -0
  119. data/lib/rfuzz/session.rb +154 -0
  120. data/lib/rfuzz/stats.rb +159 -0
  121. data/resources/defaults.yaml +2 -0
  122. data/resources/words.txt +3310 -0
  123. data/test/coverage/index.html +388 -0
  124. data/test/coverage/lib-rfuzz-client_rb.html +1127 -0
  125. data/test/coverage/lib-rfuzz-random_rb.html +739 -0
  126. data/test/coverage/lib-rfuzz-session_rb.html +783 -0
  127. data/test/coverage/lib-rfuzz-stats_rb.html +788 -0
  128. data/test/server.rb +101 -0
  129. data/test/test_client.rb +164 -0
  130. data/test/test_fuzzrnd.rb +31 -0
  131. data/test/test_httpparser.rb +48 -0
  132. data/test/test_random.rb +75 -0
  133. data/test/test_session.rb +33 -0
  134. data/test/test_stats.rb +45 -0
  135. data/tools/rakehelp.rb +119 -0
  136. metadata +201 -0
@@ -0,0 +1,481 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
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>Class: RFuzz::HttpClient</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
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>Class</strong></td>
53
+ <td class="class-name-in-header">RFuzz::HttpClient</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/rfuzz/client_rb.html">
59
+ lib/rfuzz/client.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ The actual <a href="HttpClient.html">HttpClient</a> that does the work with
84
+ the thinnest layer between you and the protocol. All exceptions and leaks
85
+ are allowed to pass through since those are important when testing. It
86
+ doesn&#8217;t pretend to be a full client, but instead is just enough
87
+ client to track cookies, form proper HTTP requests, and return <a
88
+ href="HttpResponse.html">HttpResponse</a> hashes with the results.
89
+ </p>
90
+ <p>
91
+ It&#8217;s designed so that you create one client, and then you work it
92
+ with a minimum of parameters as you need. The initialize method lets you
93
+ pass in defaults for most of the parameters you&#8217;ll need, and you can
94
+ simple call the method you want and it&#8217;ll be translated to an HTTP
95
+ method (client.get =&gt; GET, client.foobar = FOOBAR).
96
+ </p>
97
+ <p>
98
+ Here&#8217;s a few examples:
99
+ </p>
100
+ <pre>
101
+ client = HttpClient.new(:head =&gt; {&quot;X-DefaultHeader&quot; =&gt; &quot;ONE&quot;})
102
+ resp = client.post(&quot;/test&quot;)
103
+ resp = client.post(&quot;/test&quot;, :head =&gt; {&quot;X-TestSend&quot; =&gt; &quot;Status&quot;}, :body =&gt; &quot;TEST BODY&quot;)
104
+ resp = client.put(&quot;/testput&quot;, :query =&gt; {&quot;q&quot; =&gt; &quot;test&quot;}, :body =&gt; &quot;SOME JUNK&quot;)
105
+ client.reset
106
+ </pre>
107
+ <p>
108
+ The <a href="HttpClient.html#M000018">HttpClient.reset</a> call clears
109
+ cookies that are maintained.
110
+ </p>
111
+ <p>
112
+ It uses <a href="HttpClient.html#M000016">method_missing</a> to do the
113
+ translation of .put to &quot;PUT /testput HTTP/1.1&quot; so you can get
114
+ into trouble if you&#8217;re calling unknown methods on it. By default the
115
+ methods are PUT, GET, POST, DELETE, HEAD. You can change the allowed
116
+ methods by passing :allowed_methods =&gt; [:put, :get, ..] to the
117
+ initialize for the object.
118
+ </p>
119
+ <h2>Notifications</h2>
120
+ <p>
121
+ You can register a &quot;notifier&quot; with the client that will get
122
+ called when different events happen. Right now the <a
123
+ href="Notifier.html">Notifier</a> class just has a few functions for the
124
+ common parts of an HTTP request that each take a symbol and some extra
125
+ parameters. See <a href="Notifier.html">RFuzz::Notifier</a> for more
126
+ information.
127
+ </p>
128
+ <h2>Parameters</h2>
129
+ <pre>
130
+ :head =&gt; {K =&gt; V} or {K =&gt; [V1,V2]}
131
+ :query =&gt; {K =&gt; V} or {K =&gt; [V1,V2]}
132
+ :body =&gt; &quot;some body&quot; (you must encode for now)
133
+ :cookies =&gt; {K =&gt; V} or {K =&gt; [V1, V2]}
134
+ :allowed_methods =&gt; [:put, :get, :post, :delete, :head]
135
+ :notifier =&gt; Notifier.new
136
+ :redirect =&gt; false (give it a number and it'll follow redirects for that count)
137
+ </pre>
138
+
139
+ </div>
140
+
141
+
142
+ </div>
143
+
144
+ <div id="method-list">
145
+ <h3 class="section-bar">Methods</h3>
146
+
147
+ <div class="name-list">
148
+ <a href="#M000011">build_request</a>&nbsp;&nbsp;
149
+ <a href="#M000016">method_missing</a>&nbsp;&nbsp;
150
+ <a href="#M000010">new</a>&nbsp;&nbsp;
151
+ <a href="#M000019">notify</a>&nbsp;&nbsp;
152
+ <a href="#M000013">read_chunked_encoding</a>&nbsp;&nbsp;
153
+ <a href="#M000012">read_chunks</a>&nbsp;&nbsp;
154
+ <a href="#M000014">read_response</a>&nbsp;&nbsp;
155
+ <a href="#M000017">redirect</a>&nbsp;&nbsp;
156
+ <a href="#M000018">reset</a>&nbsp;&nbsp;
157
+ <a href="#M000015">send_request</a>&nbsp;&nbsp;
158
+ </div>
159
+ </div>
160
+
161
+ </div>
162
+
163
+
164
+ <!-- if includes -->
165
+ <div id="includes">
166
+ <h3 class="section-bar">Included Modules</h3>
167
+
168
+ <div id="includes-list">
169
+ <span class="include-name"><a href="HttpEncoding.html">HttpEncoding</a></span>
170
+ </div>
171
+ </div>
172
+
173
+ <div id="section">
174
+
175
+
176
+ <div id="constants-list">
177
+ <h3 class="section-bar">Constants</h3>
178
+
179
+ <div class="name-list">
180
+ <table summary="Constants">
181
+ <tr class="top-aligned-row context-row">
182
+ <td class="context-item-name">TRANSFER_ENCODING</td>
183
+ <td>=</td>
184
+ <td class="context-item-value">&quot;TRANSFER_ENCODING&quot;</td>
185
+ </tr>
186
+ <tr class="top-aligned-row context-row">
187
+ <td class="context-item-name">CONTENT_LENGTH</td>
188
+ <td>=</td>
189
+ <td class="context-item-value">&quot;CONTENT_LENGTH&quot;</td>
190
+ </tr>
191
+ <tr class="top-aligned-row context-row">
192
+ <td class="context-item-name">SET_COOKIE</td>
193
+ <td>=</td>
194
+ <td class="context-item-value">&quot;SET_COOKIE&quot;</td>
195
+ </tr>
196
+ <tr class="top-aligned-row context-row">
197
+ <td class="context-item-name">LOCATION</td>
198
+ <td>=</td>
199
+ <td class="context-item-value">&quot;LOCATION&quot;</td>
200
+ </tr>
201
+ <tr class="top-aligned-row context-row">
202
+ <td class="context-item-name">HOST</td>
203
+ <td>=</td>
204
+ <td class="context-item-value">&quot;HOST&quot;</td>
205
+ </tr>
206
+ <tr class="top-aligned-row context-row">
207
+ <td class="context-item-name">HTTP_REQUEST_HEADER</td>
208
+ <td>=</td>
209
+ <td class="context-item-value">&quot;%s %s HTTP/1.1\r\n&quot;</td>
210
+ </tr>
211
+ </table>
212
+ </div>
213
+ </div>
214
+
215
+
216
+
217
+ <div id="attribute-list">
218
+ <h3 class="section-bar">Attributes</h3>
219
+
220
+ <div class="name-list">
221
+ <table>
222
+ <tr class="top-aligned-row context-row">
223
+ <td class="context-item-name">allowed_methods</td>
224
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
225
+ <td class="context-item-desc">
226
+ Access to the host, port, default options, and cookies currently in play
227
+
228
+ </td>
229
+ </tr>
230
+ <tr class="top-aligned-row context-row">
231
+ <td class="context-item-name">cookies</td>
232
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
233
+ <td class="context-item-desc">
234
+ Access to the host, port, default options, and cookies currently in play
235
+
236
+ </td>
237
+ </tr>
238
+ <tr class="top-aligned-row context-row">
239
+ <td class="context-item-name">host</td>
240
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
241
+ <td class="context-item-desc">
242
+ Access to the host, port, default options, and cookies currently in play
243
+
244
+ </td>
245
+ </tr>
246
+ <tr class="top-aligned-row context-row">
247
+ <td class="context-item-name">notifier</td>
248
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
249
+ <td class="context-item-desc">
250
+ Access to the host, port, default options, and cookies currently in play
251
+
252
+ </td>
253
+ </tr>
254
+ <tr class="top-aligned-row context-row">
255
+ <td class="context-item-name">options</td>
256
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
257
+ <td class="context-item-desc">
258
+ Access to the host, port, default options, and cookies currently in play
259
+
260
+ </td>
261
+ </tr>
262
+ <tr class="top-aligned-row context-row">
263
+ <td class="context-item-name">port</td>
264
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
265
+ <td class="context-item-desc">
266
+ Access to the host, port, default options, and cookies currently in play
267
+
268
+ </td>
269
+ </tr>
270
+ </table>
271
+ </div>
272
+ </div>
273
+
274
+
275
+
276
+ <!-- if method_list -->
277
+ <div id="methods">
278
+ <h3 class="section-bar">Public Class methods</h3>
279
+
280
+ <div id="method-M000010" class="method-detail">
281
+ <a name="M000010"></a>
282
+
283
+ <div class="method-heading">
284
+ <a href="HttpClient.src/M000010.html" target="Code" class="method-signature"
285
+ onclick="popupCode('HttpClient.src/M000010.html');return false;">
286
+ <span class="method-name">new</span><span class="method-args">(host, port, options = {})</span>
287
+ </a>
288
+ </div>
289
+
290
+ <div class="method-description">
291
+ <p>
292
+ Doesn&#8216;t make the connect until you actually call a .put,.get, etc.
293
+ </p>
294
+ </div>
295
+ </div>
296
+
297
+ <h3 class="section-bar">Public Instance methods</h3>
298
+
299
+ <div id="method-M000011" class="method-detail">
300
+ <a name="M000011"></a>
301
+
302
+ <div class="method-heading">
303
+ <a href="HttpClient.src/M000011.html" target="Code" class="method-signature"
304
+ onclick="popupCode('HttpClient.src/M000011.html');return false;">
305
+ <span class="method-name">build_request</span><span class="method-args">(out, method, uri, req)</span>
306
+ </a>
307
+ </div>
308
+
309
+ <div class="method-description">
310
+ <p>
311
+ Builds a full request from the method, uri, req, and @cookies using the
312
+ default @options and writes it to out (should be an IO).
313
+ </p>
314
+ <p>
315
+ It returns the body that the caller should use (based on defaults
316
+ resolution).
317
+ </p>
318
+ </div>
319
+ </div>
320
+
321
+ <div id="method-M000016" class="method-detail">
322
+ <a name="M000016"></a>
323
+
324
+ <div class="method-heading">
325
+ <a href="HttpClient.src/M000016.html" target="Code" class="method-signature"
326
+ onclick="popupCode('HttpClient.src/M000016.html');return false;">
327
+ <span class="method-name">method_missing</span><span class="method-args">(symbol, *args)</span>
328
+ </a>
329
+ </div>
330
+
331
+ <div class="method-description">
332
+ <p>
333
+ Translates unknown function calls into PUT, GET, POST, DELETE, HEAD
334
+ methods. The allowed HTTP methods allowed are restricted by the
335
+ @allowed_methods attribute which you can set after construction or during
336
+ construction with :allowed_methods =&gt; [:put, :get, &#8230;]
337
+ </p>
338
+ </div>
339
+ </div>
340
+
341
+ <div id="method-M000019" class="method-detail">
342
+ <a name="M000019"></a>
343
+
344
+ <div class="method-heading">
345
+ <a href="HttpClient.src/M000019.html" target="Code" class="method-signature"
346
+ onclick="popupCode('HttpClient.src/M000019.html');return false;">
347
+ <span class="method-name">notify</span><span class="method-args">(event) {|| ...}</span>
348
+ </a>
349
+ </div>
350
+
351
+ <div class="method-description">
352
+ <p>
353
+ Sends the notifications to the registered notifier, taking a block that it
354
+ runs doing the :begins, :ends states around it.
355
+ </p>
356
+ <p>
357
+ It also catches errors transparently in order to call the notifier when an
358
+ attempt fails.
359
+ </p>
360
+ </div>
361
+ </div>
362
+
363
+ <div id="method-M000013" class="method-detail">
364
+ <a name="M000013"></a>
365
+
366
+ <div class="method-heading">
367
+ <a href="HttpClient.src/M000013.html" target="Code" class="method-signature"
368
+ onclick="popupCode('HttpClient.src/M000013.html');return false;">
369
+ <span class="method-name">read_chunked_encoding</span><span class="method-args">(resp, sock, parser)</span>
370
+ </a>
371
+ </div>
372
+
373
+ <div class="method-description">
374
+ </div>
375
+ </div>
376
+
377
+ <div id="method-M000012" class="method-detail">
378
+ <a name="M000012"></a>
379
+
380
+ <div class="method-heading">
381
+ <a href="HttpClient.src/M000012.html" target="Code" class="method-signature"
382
+ onclick="popupCode('HttpClient.src/M000012.html');return false;">
383
+ <span class="method-name">read_chunks</span><span class="method-args">(input, out, parser)</span>
384
+ </a>
385
+ </div>
386
+
387
+ <div class="method-description">
388
+ </div>
389
+ </div>
390
+
391
+ <div id="method-M000014" class="method-detail">
392
+ <a name="M000014"></a>
393
+
394
+ <div class="method-heading">
395
+ <a href="HttpClient.src/M000014.html" target="Code" class="method-signature"
396
+ onclick="popupCode('HttpClient.src/M000014.html');return false;">
397
+ <span class="method-name">read_response</span><span class="method-args">(sock)</span>
398
+ </a>
399
+ </div>
400
+
401
+ <div class="method-description">
402
+ <p>
403
+ Reads an HTTP response from the given socket. It uses readpartial which
404
+ only appeared in Ruby 1.8.4. The result is a fully formed <a
405
+ href="HttpResponse.html">HttpResponse</a> object for you to play with.
406
+ </p>
407
+ <p>
408
+ As with other methods in this class it doesn&#8217;t stop any exceptions
409
+ from reaching your code. It&#8217;s for experts who want these exceptions
410
+ so either write a wrapper, use net/http, or deal with it on your end.
411
+ </p>
412
+ </div>
413
+ </div>
414
+
415
+ <div id="method-M000017" class="method-detail">
416
+ <a name="M000017"></a>
417
+
418
+ <div class="method-heading">
419
+ <a href="HttpClient.src/M000017.html" target="Code" class="method-signature"
420
+ onclick="popupCode('HttpClient.src/M000017.html');return false;">
421
+ <span class="method-name">redirect</span><span class="method-args">(method, resp, *args)</span>
422
+ </a>
423
+ </div>
424
+
425
+ <div class="method-description">
426
+ <p>
427
+ Keeps doing requests until it doesn&#8217;t receive a 3XX request.
428
+ </p>
429
+ </div>
430
+ </div>
431
+
432
+ <div id="method-M000018" class="method-detail">
433
+ <a name="M000018"></a>
434
+
435
+ <div class="method-heading">
436
+ <a href="HttpClient.src/M000018.html" target="Code" class="method-signature"
437
+ onclick="popupCode('HttpClient.src/M000018.html');return false;">
438
+ <span class="method-name">reset</span><span class="method-args">()</span>
439
+ </a>
440
+ </div>
441
+
442
+ <div class="method-description">
443
+ <p>
444
+ Clears out the cookies in use so far in order to get a clean slate.
445
+ </p>
446
+ </div>
447
+ </div>
448
+
449
+ <div id="method-M000015" class="method-detail">
450
+ <a name="M000015"></a>
451
+
452
+ <div class="method-heading">
453
+ <a href="HttpClient.src/M000015.html" target="Code" class="method-signature"
454
+ onclick="popupCode('HttpClient.src/M000015.html');return false;">
455
+ <span class="method-name">send_request</span><span class="method-args">(method, uri, req)</span>
456
+ </a>
457
+ </div>
458
+
459
+ <div class="method-description">
460
+ <p>
461
+ Does the socket connect and then <a
462
+ href="HttpClient.html#M000011">build_request</a>, <a
463
+ href="HttpClient.html#M000014">read_response</a> calls finally returning
464
+ the result.
465
+ </p>
466
+ </div>
467
+ </div>
468
+
469
+
470
+ </div>
471
+
472
+
473
+ </div>
474
+
475
+
476
+ <div id="validator-badges">
477
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
478
+ </div>
479
+
480
+ </body>
481
+ </html>