ronin 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. data.tar.gz.sig +2 -0
  2. data/History.txt +43 -0
  3. data/Manifest.txt +27 -10
  4. data/README.txt +2 -1
  5. data/Rakefile +12 -11
  6. data/TODO.txt +8 -0
  7. data/bin/{ronin-ls → ronin-list} +2 -2
  8. data/bin/{ronin-rm → ronin-remove} +2 -2
  9. data/lib/ronin/cacheable.rb +25 -4
  10. data/lib/ronin/code/reference.rb +0 -9
  11. data/lib/ronin/code/symbol_table.rb +5 -5
  12. data/lib/ronin/code/token.rb +1 -1
  13. data/lib/ronin/database/database.rb +3 -1
  14. data/lib/ronin/extensions/kernel.rb +25 -3
  15. data/lib/ronin/formatting/extensions/binary/file.rb +60 -0
  16. data/lib/ronin/formatting/extensions/text.rb +1 -0
  17. data/lib/ronin/formatting/extensions/text/array.rb +67 -0
  18. data/lib/ronin/model.rb +1 -40
  19. data/lib/ronin/{has_license.rb → model/has_description.rb} +16 -18
  20. data/lib/ronin/model/has_license.rb +53 -0
  21. data/lib/ronin/model/has_name.rb +49 -0
  22. data/lib/ronin/model/has_version.rb +46 -0
  23. data/lib/ronin/model/model.rb +64 -0
  24. data/lib/ronin/network/extensions/http/net.rb +580 -99
  25. data/lib/ronin/network/http.rb +54 -6
  26. data/lib/ronin/os.rb +7 -7
  27. data/lib/ronin/platform/extension.rb +4 -6
  28. data/lib/ronin/platform/maintainer.rb +1 -1
  29. data/lib/ronin/platform/object_cache.rb +10 -2
  30. data/lib/ronin/platform/overlay_cache.rb +1 -1
  31. data/lib/ronin/platform/platform.rb +5 -3
  32. data/lib/ronin/platform/ronin.rb +3 -3
  33. data/lib/ronin/scanners.rb +25 -0
  34. data/lib/ronin/scanners/exceptions.rb +24 -0
  35. data/lib/ronin/scanners/exceptions/unknown_category.rb +29 -0
  36. data/lib/ronin/scanners/scanner.rb +239 -0
  37. data/lib/ronin/sessions/http.rb +548 -7
  38. data/lib/ronin/{translators.rb → templates.rb} +1 -1
  39. data/lib/ronin/templates/erb.rb +56 -0
  40. data/lib/ronin/ui/command_line/command_line.rb +10 -1
  41. data/lib/ronin/ui/command_line/commands/{ls.rb → list.rb} +1 -1
  42. data/lib/ronin/ui/command_line/commands/{rm.rb → remove.rb} +1 -1
  43. data/lib/ronin/ui/command_line/commands/uninstall.rb +2 -2
  44. data/lib/ronin/ui/console.rb +66 -17
  45. data/lib/ronin/ui/shell.rb +16 -36
  46. data/lib/ronin/version.rb +1 -1
  47. data/spec/cacheable_spec.rb +1 -1
  48. data/spec/code/classes/thing.rb +4 -0
  49. data/spec/code/reference_spec.rb +4 -0
  50. data/spec/code/symbol_table_spec.rb +5 -1
  51. data/spec/extensions/kernel_spec.rb +45 -5
  52. data/spec/extensions/string_spec.rb +4 -0
  53. data/spec/formatting/binary/integer_spec.rb +3 -3
  54. data/spec/formatting/binary/string_spec.rb +5 -5
  55. data/spec/formatting/digest/string_spec.rb +5 -9
  56. data/spec/formatting/http/string_spec.rb +5 -9
  57. data/spec/formatting/text/array_spec.rb +64 -0
  58. data/spec/formatting/text/string_spec.rb +3 -3
  59. data/spec/model/classes/licensed_model.rb +12 -0
  60. data/spec/{has_license_spec.rb → model/has_license_spec.rb} +5 -5
  61. data/spec/network/http_spec.rb +197 -0
  62. data/spec/os_spec.rb +2 -5
  63. data/spec/platform/maintainer_spec.rb +30 -0
  64. data/spec/platform/ronin_spec.rb +2 -2
  65. data/spec/scanners/classes/another_scanner.rb +16 -0
  66. data/spec/scanners/classes/example_scanner.rb +22 -0
  67. data/spec/scanners/scanner_spec.rb +148 -0
  68. data/spec/spec_helper.rb +1 -1
  69. data/spec/templates/classes/uses_erb.rb +11 -0
  70. data/spec/templates/erb_spec.rb +20 -0
  71. data/static/ronin/platform/overlay.xsl +128 -49
  72. metadata +83 -30
  73. metadata.gz.sig +0 -0
  74. data/lib/ronin/translators/translator.rb +0 -75
  75. data/spec/classes/licensed_model.rb +0 -12
  76. data/spec/translators/translator_spec.rb +0 -61
@@ -44,76 +44,612 @@ module Ronin
44
44
  # object.
45
45
  #
46
46
  # _options_ may contain the following keys:
47
- # <tt>:host</tt>:: The host the HTTP server is running on.
48
- # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
49
- # <tt>Net::HTTP.default_port</tt>.
50
47
  # <tt>:url</tt>:: The full URL to request.
51
48
  # <tt>:user</tt>:: The user to authenticate with when connecting to the
52
49
  # HTTP server.
53
50
  # <tt>:password</tt>:: The password to authenticate with when
54
51
  # connecting to the HTTP server.
52
+ # <tt>:host</tt>:: The host the HTTP server is running on.
53
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
54
+ # <tt>Net::HTTP.default_port</tt>.
55
55
  # <tt>:path</tt>:: The path to request from the HTTP server.
56
56
  #
57
57
  def http_session(options={},&block)
58
58
  Net.http_session(http_merge_options(options),&block)
59
59
  end
60
60
 
61
+ #
62
+ # Connects to the HTTP server and sends an HTTP Request using the
63
+ # given _options_. If a _block_ is given it will be passed the newly
64
+ # created HTTP Request object. Returns the
65
+ # <tt>Net::HTTP::Response</tt> that was returned.
66
+ #
67
+ # _options_ may contain the following keys:
68
+ # <tt>:method</tt>:: The HTTP method to use for the request.
69
+ # <tt>:url</tt>:: The full URL to request.
70
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
71
+ # the HTTP server.
72
+ # <tt>:password</tt>:: The password to authenticate with when
73
+ # connecting to the HTTP server.
74
+ # <tt>:host</tt>:: The host the HTTP server is running on.
75
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults
76
+ # to <tt>Net::HTTP.default_port</tt>.
77
+ # <tt>:path</tt>:: The path to request from the HTTP server.
78
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
79
+ # the HTTP server. Defaults to
80
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
81
+ # <tt>:host</tt>:: The HTTP proxy host to connect
82
+ # to.
83
+ # <tt>:port</tt>:: The HTTP proxy port to connect
84
+ # to.
85
+ # Defaults to <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
86
+ # <tt>:user</tt>:: The user to authenticate with
87
+ # when connecting to the HTTP
88
+ # proxy.
89
+ # <tt>:password</tt>:: The password to authenticate
90
+ # with when connecting to the
91
+ # HTTP proxy.
92
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the
93
+ # request. May use Strings or Symbols for the
94
+ # keys of the Hash.
95
+ #
96
+ def http_request(options={},&block)
97
+ Net.http_request(http_merge_options(options),&block)
98
+ end
99
+
100
+ #
101
+ # Performes an HTTP Copy request with the given _options_. If a
102
+ # _block_ is given, it will be passed the response from the HTTP
103
+ # server. Returns the response from the HTTP server.
104
+ #
105
+ # _options_ may contain the following keys:
106
+ # <tt>:url</tt>:: The full URL to request.
107
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
108
+ # the HTTP server.
109
+ # <tt>:password</tt>:: The password to authenticate with when
110
+ # connecting to the HTTP server.
111
+ # <tt>:host</tt>:: The host the HTTP server is running on.
112
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
113
+ # <tt>Net::HTTP.default_port</tt>.
114
+ # <tt>:path</tt>:: The path to request from the HTTP server.
115
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
116
+ # the HTTP server. Defaults to
117
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
118
+ # <tt>:host</tt>:: The HTTP proxy host to connect
119
+ # to.
120
+ # <tt>:port</tt>:: The HTTP proxy port to connect
121
+ # to. Defaults to
122
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
123
+ # <tt>:user</tt>:: The user to authenticate with
124
+ # when connecting to the HTTP
125
+ # proxy.
126
+ # <tt>:password</tt>:: The password to authenticate
127
+ # with when connecting to the
128
+ # HTTP proxy.
129
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
130
+ # Copy request. May use Strings or Symbols for the
131
+ # keys of the Hash.
132
+ #
61
133
  def http_copy(options={},&block)
62
134
  Net.http_copy(http_merge_options(options),&block)
63
135
  end
64
136
 
137
+ #
138
+ # Performes an HTTP Delete request with the given _options_. If a
139
+ # _block_ is given, it will be passed the response from the HTTP
140
+ # server. Returns the response from the HTTP server.
141
+ #
142
+ # _options_ may contain the following keys:
143
+ # <tt>:url</tt>:: The full URL to request.
144
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
145
+ # the HTTP server.
146
+ # <tt>:password</tt>:: The password to authenticate with when
147
+ # connecting to the HTTP server.
148
+ # <tt>:host</tt>:: The host the HTTP server is running on.
149
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
150
+ # <tt>Net::HTTP.default_port</tt>.
151
+ # <tt>:path</tt>:: The path to request from the HTTP server.
152
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
153
+ # the HTTP server. Defaults to
154
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
155
+ # <tt>:host</tt>:: The HTTP proxy host to connect
156
+ # to.
157
+ # <tt>:port</tt>:: The HTTP proxy port to connect
158
+ # to. Defaults to
159
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
160
+ # <tt>:user</tt>:: The user to authenticate with
161
+ # when connecting to the HTTP
162
+ # proxy.
163
+ # <tt>:password</tt>:: The password to authenticate
164
+ # with when connecting to the
165
+ # HTTP proxy.
166
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
167
+ # Delete request. May use Strings or Symbols for
168
+ # the keys of the Hash.
169
+ #
65
170
  def http_delete(options={},&block)
66
171
  Net.http_delete(http_merge_options(options),&block)
67
172
  end
68
173
 
174
+ #
175
+ # Performes an HTTP Get request with the given _options_. If a _block_
176
+ # is given, it will be passed the response from the HTTP server.
177
+ # Returns the response from the HTTP server.
178
+ #
179
+ # _options_ may contain the following keys:
180
+ # <tt>:url</tt>:: The full URL to request.
181
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
182
+ # the HTTP server.
183
+ # <tt>:password</tt>:: The password to authenticate with when
184
+ # connecting to the HTTP server.
185
+ # <tt>:host</tt>:: The host the HTTP server is running on.
186
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
187
+ # <tt>Net::HTTP.default_port</tt>.
188
+ # <tt>:path</tt>:: The path to request from the HTTP server.
189
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
190
+ # the HTTP server. Defaults to
191
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
192
+ # <tt>:host</tt>:: The HTTP proxy host to connect
193
+ # to.
194
+ # <tt>:port</tt>:: The HTTP proxy port to connect
195
+ # to. Defaults to
196
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
197
+ # <tt>:user</tt>:: The user to authenticate with
198
+ # when connecting to the HTTP
199
+ # proxy.
200
+ # <tt>:password</tt>:: The password to authenticate
201
+ # with when connecting to the
202
+ # HTTP proxy.
203
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
204
+ # Get request. May use Strings or Symbols for the
205
+ # keys of the Hash.
206
+ #
69
207
  def http_get(options={},&block)
70
208
  Net.http_get(http_merge_options(options),&block)
71
209
  end
72
210
 
211
+ #
212
+ # Performes an HTTP Get request with the given _options_. If a _block_
213
+ # is given, it will be passed the response body from the HTTP server.
214
+ # Returns the response body from the HTTP server.
215
+ #
216
+ # _options_ may contain the following keys:
217
+ # <tt>:url</tt>:: The full URL to request.
218
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
219
+ # the HTTP server.
220
+ # <tt>:password</tt>:: The password to authenticate with when
221
+ # connecting to the HTTP server.
222
+ # <tt>:host</tt>:: The host the HTTP server is running on.
223
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
224
+ # <tt>Net::HTTP.default_port</tt>.
225
+ # <tt>:path</tt>:: The path to request from the HTTP server.
226
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
227
+ # the HTTP server. Defaults to
228
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
229
+ # <tt>:host</tt>:: The HTTP proxy host to connect
230
+ # to.
231
+ # <tt>:port</tt>:: The HTTP proxy port to connect
232
+ # to. Defaults to
233
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
234
+ # <tt>:user</tt>:: The user to authenticate with
235
+ # when connecting to the HTTP
236
+ # proxy.
237
+ # <tt>:password</tt>:: The password to authenticate
238
+ # with when connecting to the
239
+ # HTTP proxy.
240
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
241
+ # Get request. May use Strings or Symbols for the
242
+ # keys of the Hash.
243
+ #
73
244
  def http_get_body(options={},&block)
74
245
  Net.http_get_body(http_merge_options(options),&block)
75
246
  end
76
247
 
248
+ #
249
+ # Performes an HTTP Head request with the given _options_. If a
250
+ # _block_ is given, it will be passed the response from the HTTP
251
+ # server. Returns the response from the HTTP server.
252
+ #
253
+ # _options_ may contain the following keys:
254
+ # <tt>:url</tt>:: The full URL to request.
255
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
256
+ # the HTTP server.
257
+ # <tt>:password</tt>:: The password to authenticate with when
258
+ # connecting to the HTTP server.
259
+ # <tt>:host</tt>:: The host the HTTP server is running on.
260
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
261
+ # <tt>Net::HTTP.default_port</tt>.
262
+ # <tt>:path</tt>:: The path to request from the HTTP server.
263
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
264
+ # the HTTP server. Defaults to
265
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
266
+ # <tt>:host</tt>:: The HTTP proxy host to connect
267
+ # to.
268
+ # <tt>:port</tt>:: The HTTP proxy port to connect
269
+ # to. Defaults to
270
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
271
+ # <tt>:user</tt>:: The user to authenticate with
272
+ # when connecting to the HTTP
273
+ # proxy.
274
+ # <tt>:password</tt>:: The password to authenticate
275
+ # with when connecting to the
276
+ # HTTP proxy.
277
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
278
+ # Head request. May use Strings or Symbols for the
279
+ # keys of the Hash.
280
+ #
77
281
  def http_head(options={},&block)
78
282
  Net.http_head(http_merge_options(options),&block)
79
283
  end
80
284
 
285
+ #
286
+ # Performes an HTTP Lock request with the given _options_. If a
287
+ # _block_ is given, it will be passed the response from the HTTP
288
+ # server. Returns the response from the HTTP server.
289
+ #
290
+ # _options_ may contain the following keys:
291
+ # <tt>:url</tt>:: The full URL to request.
292
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
293
+ # the HTTP server.
294
+ # <tt>:password</tt>:: The password to authenticate with when
295
+ # connecting to the HTTP server.
296
+ # <tt>:host</tt>:: The host the HTTP server is running on.
297
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
298
+ # <tt>Net::HTTP.default_port</tt>.
299
+ # <tt>:path</tt>:: The path to request from the HTTP server.
300
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
301
+ # the HTTP server. Defaults to
302
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
303
+ # <tt>:host</tt>:: The HTTP proxy host to connect
304
+ # to.
305
+ # <tt>:port</tt>:: The HTTP proxy port to connect
306
+ # to. Defaults to
307
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
308
+ # <tt>:user</tt>:: The user to authenticate with
309
+ # when connecting to the HTTP
310
+ # proxy.
311
+ # <tt>:password</tt>:: The password to authenticate
312
+ # with when connecting to the
313
+ # HTTP proxy.
314
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
315
+ # Lock request. May use Strings or Symbols for the
316
+ # keys of the Hash.
317
+ #
81
318
  def http_lock(options={},&block)
82
319
  Net.http_lock(http_merge_options(options),&block)
83
320
  end
84
321
 
322
+ #
323
+ # Performes an HTTP Mkcol request with the given _options_. If a
324
+ # _block_ is given, it will be passed the response from the HTTP
325
+ # server. Returns the response from the HTTP server.
326
+ #
327
+ # _options_ may contain the following keys:
328
+ # <tt>:url</tt>:: The full URL to request.
329
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
330
+ # the HTTP server.
331
+ # <tt>:password</tt>:: The password to authenticate with when
332
+ # connecting to the HTTP server.
333
+ # <tt>:host</tt>:: The host the HTTP server is running on.
334
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
335
+ # <tt>Net::HTTP.default_port</tt>.
336
+ # <tt>:path</tt>:: The path to request from the HTTP server.
337
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
338
+ # the HTTP server. Defaults to
339
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
340
+ # <tt>:host</tt>:: The HTTP proxy host to connect
341
+ # to.
342
+ # <tt>:port</tt>:: The HTTP proxy port to connect
343
+ # to. Defaults to
344
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
345
+ # <tt>:user</tt>:: The user to authenticate with
346
+ # when connecting to the HTTP
347
+ # proxy.
348
+ # <tt>:password</tt>:: The password to authenticate
349
+ # with when connecting to the
350
+ # HTTP proxy.
351
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
352
+ # Mkcol request. May use Strings or Symbols for
353
+ # the keys of the Hash.
354
+ #
85
355
  def http_mkcol(options={},&block)
86
356
  Net.http_mkcol(http_merge_options(options),&block)
87
357
  end
88
358
 
359
+ #
360
+ # Performes an HTTP Move request with the given _options_. If a
361
+ # _block_ is given, it will be passed the response from the HTTP
362
+ # server. Returns the response from the HTTP server.
363
+ #
364
+ # _options_ may contain the following keys:
365
+ # <tt>:url</tt>:: The full URL to request.
366
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
367
+ # the HTTP server.
368
+ # <tt>:password</tt>:: The password to authenticate with when
369
+ # connecting to the HTTP server.
370
+ # <tt>:host</tt>:: The host the HTTP server is running on.
371
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
372
+ # <tt>Net::HTTP.default_port</tt>.
373
+ # <tt>:path</tt>:: The path to request from the HTTP server.
374
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
375
+ # the HTTP server. Defaults to
376
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
377
+ # <tt>:host</tt>:: The HTTP proxy host to connect
378
+ # to.
379
+ # <tt>:port</tt>:: The HTTP proxy port to connect
380
+ # to. Defaults to
381
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
382
+ # <tt>:user</tt>:: The user to authenticate with
383
+ # when connecting to the HTTP
384
+ # proxy.
385
+ # <tt>:password</tt>:: The password to authenticate
386
+ # with when connecting to the
387
+ # HTTP proxy.
388
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
389
+ # Move request. May use Strings or Symbols for the
390
+ # keys of the Hash.
391
+ #
89
392
  def http_move(options={},&block)
90
393
  Net.http_move(http_merge_options(options),&block)
91
394
  end
92
395
 
396
+ #
397
+ # Performes an HTTP Options request with the given _options_. If a
398
+ # _block_ is given, it will be passed the response from the HTTP
399
+ # server. Returns the response from the HTTP server.
400
+ #
401
+ # _options_ may contain the following keys:
402
+ # <tt>:url</tt>:: The full URL to request.
403
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
404
+ # the HTTP server.
405
+ # <tt>:password</tt>:: The password to authenticate with when
406
+ # connecting to the HTTP server.
407
+ # <tt>:host</tt>:: The host the HTTP server is running on.
408
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
409
+ # <tt>Net::HTTP.default_port</tt>.
410
+ # <tt>:path</tt>:: The path to request from the HTTP server.
411
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
412
+ # the HTTP server. Defaults to
413
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
414
+ # <tt>:host</tt>:: The HTTP proxy host to connect
415
+ # to.
416
+ # <tt>:port</tt>:: The HTTP proxy port to connect
417
+ # to. Defaults to
418
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
419
+ # <tt>:user</tt>:: The user to authenticate with
420
+ # when connecting to the HTTP
421
+ # proxy.
422
+ # <tt>:password</tt>:: The password to authenticate
423
+ # with when connecting to the
424
+ # HTTP proxy.
425
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
426
+ # Options request. May use Strings or Symbols for
427
+ # the keys of the Hash.
428
+ #
93
429
  def http_options(options={},&block)
94
430
  Net.http_options(http_merge_options(options),&block)
95
431
  end
96
432
 
433
+ #
434
+ # Performes an HTTP Post request with the given _options_. If a
435
+ # _block_ is given, it will be passed the response from the HTTP
436
+ # server. Returns the response from the HTTP server.
437
+ #
438
+ # _options_ may contain the following keys:
439
+ # <tt>:url</tt>:: The full URL to request.
440
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
441
+ # the HTTP server.
442
+ # <tt>:password</tt>:: The password to authenticate with when
443
+ # connecting to the HTTP server.
444
+ # <tt>:host</tt>:: The host the HTTP server is running on.
445
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
446
+ # <tt>Net::HTTP.default_port</tt>.
447
+ # <tt>:path</tt>:: The path to request from the HTTP server.
448
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
449
+ # the HTTP server. Defaults to
450
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
451
+ # <tt>:host</tt>:: The HTTP proxy host to connect
452
+ # to.
453
+ # <tt>:port</tt>:: The HTTP proxy port to connect
454
+ # to. Defaults to
455
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
456
+ # <tt>:user</tt>:: The user to authenticate with
457
+ # when connecting to the HTTP
458
+ # proxy.
459
+ # <tt>:password</tt>:: The password to authenticate
460
+ # with when connecting to the
461
+ # HTTP proxy.
462
+ # <tt>:post_data</tt>:: The POSTDATA to send with the HTTP Post
463
+ # request.
464
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
465
+ # Post request. May use Strings or Symbols for the
466
+ # keys of the Hash.
467
+ #
97
468
  def http_post(options={},&block)
98
469
  Net.http_post(http_merge_options(options),&block)
99
470
  end
100
471
 
472
+ #
473
+ # Performes an HTTP Post request with the given _options_. If a
474
+ # _block_ is given, it will be passed the response body from the HTTP
475
+ # server. Returns the response body from the HTTP server.
476
+ #
477
+ # _options_ may contain the following keys:
478
+ # <tt>:url</tt>:: The full URL to request.
479
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
480
+ # the HTTP server.
481
+ # <tt>:password</tt>:: The password to authenticate with when
482
+ # connecting to the HTTP server.
483
+ # <tt>:host</tt>:: The host the HTTP server is running on.
484
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
485
+ # <tt>Net::HTTP.default_port</tt>.
486
+ # <tt>:path</tt>:: The path to request from the HTTP server.
487
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
488
+ # the HTTP server. Defaults to
489
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
490
+ # <tt>:host</tt>:: The HTTP proxy host to connect
491
+ # to.
492
+ # <tt>:port</tt>:: The HTTP proxy port to connect
493
+ # to. Defaults to
494
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
495
+ # <tt>:user</tt>:: The user to authenticate with
496
+ # when connecting to the HTTP
497
+ # proxy.
498
+ # <tt>:password</tt>:: The password to authenticate
499
+ # with when connecting to the
500
+ # HTTP proxy.
501
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
502
+ # Post request. May use Strings or Symbols for the
503
+ # keys of the Hash.
504
+ #
101
505
  def http_post_body(options={},&block)
102
506
  Net.http_post_body(http_merge_options(options),&block)
103
507
  end
104
508
 
509
+ #
510
+ # Performes an HTTP Propfind request with the given _options_. If a
511
+ # _block_ is given, it will be passed the response from the HTTP
512
+ # server. Returns the response from the HTTP server.
513
+ #
514
+ # _options_ may contain the following keys:
515
+ # <tt>:url</tt>:: The full URL to request.
516
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
517
+ # the HTTP server.
518
+ # <tt>:password</tt>:: The password to authenticate with when
519
+ # connecting to the HTTP server.
520
+ # <tt>:host</tt>:: The host the HTTP server is running on.
521
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
522
+ # <tt>Net::HTTP.default_port</tt>.
523
+ # <tt>:path</tt>:: The path to request from the HTTP server.
524
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
525
+ # the HTTP server. Defaults to
526
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
527
+ # <tt>:host</tt>:: The HTTP proxy host to connect
528
+ # to.
529
+ # <tt>:port</tt>:: The HTTP proxy port to connect
530
+ # to. Defaults to
531
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
532
+ # <tt>:user</tt>:: The user to authenticate with
533
+ # when connecting to the HTTP
534
+ # proxy.
535
+ # <tt>:password</tt>:: The password to authenticate
536
+ # with when connecting to the
537
+ # HTTP proxy.
538
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
539
+ # Propfind request. May use Strings or Symbols for
540
+ # the keys of the Hash.
541
+ #
105
542
  def http_prop_find(options={},&block)
106
543
  Net.http_prop_find(http_merge_options(options),&block)
107
544
  end
108
545
 
109
- def http_prop_path(options={},&block)
110
- Net.http_prop_path(http_merge_options(options),&block)
546
+ #
547
+ # Performes an HTTP Proppatch request with the given _options_. If a
548
+ # _block_ is given, it will be passed the response from the HTTP
549
+ # server. Returns the response from the HTTP server.
550
+ #
551
+ # _options_ may contain the following keys:
552
+ # <tt>:url</tt>:: The full URL to request.
553
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
554
+ # the HTTP server.
555
+ # <tt>:password</tt>:: The password to authenticate with when
556
+ # connecting to the HTTP server.
557
+ # <tt>:host</tt>:: The host the HTTP server is running on.
558
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
559
+ # <tt>Net::HTTP.default_port</tt>.
560
+ # <tt>:path</tt>:: The path to request from the HTTP server.
561
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
562
+ # the HTTP server. Defaults to
563
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
564
+ # <tt>:host</tt>:: The HTTP proxy host to connect
565
+ # to.
566
+ # <tt>:port</tt>:: The HTTP proxy port to connect
567
+ # to. Defaults to
568
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
569
+ # <tt>:user</tt>:: The user to authenticate with
570
+ # when connecting to the HTTP
571
+ # proxy.
572
+ # <tt>:password</tt>:: The password to authenticate
573
+ # with when connecting to the
574
+ # HTTP proxy.
575
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
576
+ # Proppatch request. May use Strings or Symbols
577
+ # for the keys of the Hash.
578
+ #
579
+ def http_prop_patch(options={},&block)
580
+ Net.http_prop_patch(http_merge_options(options),&block)
111
581
  end
112
582
 
583
+ #
584
+ # Performes an HTTP Trace request with the given _options_. If a
585
+ # _block_ is given, it will be passed the response from the HTTP
586
+ # server. Returns the response from the HTTP server.
587
+ #
588
+ # _options_ may contain the following keys:
589
+ # <tt>:url</tt>:: The full URL to request.
590
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
591
+ # the HTTP server.
592
+ # <tt>:password</tt>:: The password to authenticate with when
593
+ # connecting to the HTTP server.
594
+ # <tt>:host</tt>:: The host the HTTP server is running on.
595
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
596
+ # <tt>Net::HTTP.default_port</tt>.
597
+ # <tt>:path</tt>:: The path to request from the HTTP server.
598
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
599
+ # the HTTP server. Defaults to
600
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
601
+ # <tt>:host</tt>:: The HTTP proxy host to connect
602
+ # to.
603
+ # <tt>:port</tt>:: The HTTP proxy port to connect
604
+ # to. Defaults to
605
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
606
+ # <tt>:user</tt>:: The user to authenticate with
607
+ # when connecting to the HTTP
608
+ # proxy.
609
+ # <tt>:password</tt>:: The password to authenticate
610
+ # with when connecting to the
611
+ # HTTP proxy.
612
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
613
+ # Trace request. May use Strings or Symbols for
614
+ # the keys of the Hash.
615
+ #
113
616
  def http_trace(options={},&block)
114
617
  Net.http_trace(http_merge_options(options),&block)
115
618
  end
116
619
 
620
+ #
621
+ # Performes an HTTP Unlock request with the given _options_. If a
622
+ # _block_ is given, it will be passed the response from the HTTP
623
+ # server. Returns the response from the HTTP server.
624
+ #
625
+ # _options_ may contain the following keys:
626
+ # <tt>:url</tt>:: The full URL to request.
627
+ # <tt>:user</tt>:: The user to authenticate with when connecting to
628
+ # the HTTP server.
629
+ # <tt>:password</tt>:: The password to authenticate with when
630
+ # connecting to the HTTP server.
631
+ # <tt>:host</tt>:: The host the HTTP server is running on.
632
+ # <tt>:port</tt>:: The port the HTTP server is running on. Defaults to
633
+ # <tt>Net::HTTP.default_port</tt>.
634
+ # <tt>:path</tt>:: The path to request from the HTTP server.
635
+ # <tt>:proxy</tt>:: A Hash of proxy settings to use when connecting to
636
+ # the HTTP server. Defaults to
637
+ # <tt>Ronin::Network::HTTP.proxy</tt>.
638
+ # <tt>:host</tt>:: The HTTP proxy host to connect
639
+ # to.
640
+ # <tt>:port</tt>:: The HTTP proxy port to connect
641
+ # to. Defaults to
642
+ # <tt>Ronin::Network::HTTP.default_proxy_port</tt>.
643
+ # <tt>:user</tt>:: The user to authenticate with
644
+ # when connecting to the HTTP
645
+ # proxy.
646
+ # <tt>:password</tt>:: The password to authenticate
647
+ # with when connecting to the
648
+ # HTTP proxy.
649
+ # <tt>:headers</tt>:: A Hash of the HTTP Headers to send with the HTTP
650
+ # Unlock request. May use Strings or Symbols for
651
+ # the keys of the Hash.
652
+ #
117
653
  def http_unlock(options={},&block)
118
654
  Net.http_unlock(http_merge_options(options),&block)
119
655
  end
@@ -121,8 +657,13 @@ module Ronin
121
657
  private
122
658
 
123
659
  def http_merge_options(options={})
124
- options[:host] ||= @http_host if @http_host
125
- options[:port] ||= @http_port if @http_port
660
+ options[:host] ||= @host if @host
661
+ options[:port] ||= @port if @port
662
+
663
+ options[:headers] ||= {}
664
+ headers = options[:headers]
665
+
666
+ headers[:host] ||= @http_vhost if @http_vhost
126
667
 
127
668
  options[:user] ||= @http_user if @http_user
128
669
  options[:password] ||= @http_password if @http_password