ronin 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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