abiquo-etk 0.4.13

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 (530) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +87 -0
  6. data/TODO +6 -0
  7. data/VERSION +1 -0
  8. data/abiquo-etk.gemspec +577 -0
  9. data/abiquo-etk.spec +125 -0
  10. data/bin/abicli +90 -0
  11. data/bin/abiquo-check-16-install +129 -0
  12. data/bin/aetk-setup-rs +36 -0
  13. data/bin/aetk-setup-server +77 -0
  14. data/bin/aetk-setup-v2v +33 -0
  15. data/lib/abicli/commands/remote-services-settings.rb +24 -0
  16. data/lib/abicli/commands/server-settings.rb +22 -0
  17. data/lib/abicli/commands/set.rb +133 -0
  18. data/lib/abicli/commands/smoketest.rb +93 -0
  19. data/lib/abicli/commands/upload-template.rb +272 -0
  20. data/lib/abicli/commands/version.rb +5 -0
  21. data/lib/abiquo-etk.rb +191 -0
  22. data/lib/checks/01detect_abiquo.rb +4 -0
  23. data/lib/checks/abiquo_service.rb +34 -0
  24. data/lib/checks/abiquo_version.rb +24 -0
  25. data/lib/checks/components_installed.rb +6 -0
  26. data/lib/checks/firewall.rb +10 -0
  27. data/lib/checks/hv_passwords.rb +51 -0
  28. data/lib/checks/install_type.rb +8 -0
  29. data/lib/checks/java.rb +19 -0
  30. data/lib/checks/mysql.rb +33 -0
  31. data/lib/checks/nfs.rb +18 -0
  32. data/lib/checks/os_version.rb +5 -0
  33. data/lib/checks/virtualbox.rb +11 -0
  34. data/scripts/setup_rs +44 -0
  35. data/scripts/setup_v2v +1 -0
  36. data/vendor/activesupport-2.3.8/CHANGELOG +1367 -0
  37. data/vendor/activesupport-2.3.8/README +43 -0
  38. data/vendor/activesupport-2.3.8/lib/active_support/all.rb +8 -0
  39. data/vendor/activesupport-2.3.8/lib/active_support/backtrace_cleaner.rb +72 -0
  40. data/vendor/activesupport-2.3.8/lib/active_support/base64.rb +33 -0
  41. data/vendor/activesupport-2.3.8/lib/active_support/basic_object.rb +24 -0
  42. data/vendor/activesupport-2.3.8/lib/active_support/buffered_logger.rb +127 -0
  43. data/vendor/activesupport-2.3.8/lib/active_support/cache/compressed_mem_cache_store.rb +20 -0
  44. data/vendor/activesupport-2.3.8/lib/active_support/cache/drb_store.rb +14 -0
  45. data/vendor/activesupport-2.3.8/lib/active_support/cache/file_store.rb +72 -0
  46. data/vendor/activesupport-2.3.8/lib/active_support/cache/mem_cache_store.rb +143 -0
  47. data/vendor/activesupport-2.3.8/lib/active_support/cache/memory_store.rb +58 -0
  48. data/vendor/activesupport-2.3.8/lib/active_support/cache/strategy/local_cache.rb +104 -0
  49. data/vendor/activesupport-2.3.8/lib/active_support/cache/synchronized_memory_store.rb +47 -0
  50. data/vendor/activesupport-2.3.8/lib/active_support/cache.rb +248 -0
  51. data/vendor/activesupport-2.3.8/lib/active_support/callbacks.rb +279 -0
  52. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/access.rb +53 -0
  53. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/conversions.rb +197 -0
  54. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/extract_options.rb +20 -0
  55. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/grouping.rb +106 -0
  56. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/random_access.rb +22 -0
  57. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array/wrapper.rb +24 -0
  58. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/array.rb +15 -0
  59. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/base64/encoding.rb +16 -0
  60. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/base64.rb +4 -0
  61. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb +19 -0
  62. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/bigdecimal/conversions.rb +37 -0
  63. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/bigdecimal.rb +6 -0
  64. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/blank.rb +2 -0
  65. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +23 -0
  66. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/cgi.rb +5 -0
  67. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/class/attribute_accessors.rb +61 -0
  68. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/class/delegating_attributes.rb +47 -0
  69. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  70. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/class/removal.rb +50 -0
  71. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/class.rb +4 -0
  72. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date/behavior.rb +42 -0
  73. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date/calculations.rb +241 -0
  74. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date/conversions.rb +107 -0
  75. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date.rb +10 -0
  76. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date_time/calculations.rb +126 -0
  77. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date_time/conversions.rb +107 -0
  78. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/date_time.rb +12 -0
  79. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/duplicable.rb +43 -0
  80. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/enumerable.rb +120 -0
  81. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/exception.rb +45 -0
  82. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/file/atomic.rb +47 -0
  83. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/file.rb +5 -0
  84. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/float/rounding.rb +24 -0
  85. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/float/time.rb +27 -0
  86. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/float.rb +7 -0
  87. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/conversions.rb +247 -0
  88. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/deep_merge.rb +23 -0
  89. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/diff.rb +19 -0
  90. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/except.rb +25 -0
  91. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/indifferent_access.rb +143 -0
  92. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/keys.rb +52 -0
  93. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/reverse_merge.rb +35 -0
  94. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash/slice.rb +40 -0
  95. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/hash.rb +14 -0
  96. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  97. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/integer/inflections.rb +20 -0
  98. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/integer/time.rb +45 -0
  99. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/integer.rb +9 -0
  100. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  101. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  102. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel/debugger.rb +16 -0
  103. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  104. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel/requires.rb +24 -0
  105. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/kernel.rb +5 -0
  106. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/load_error.rb +38 -0
  107. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/logger.rb +145 -0
  108. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/aliasing.rb +74 -0
  109. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  110. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  111. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/attribute_accessors.rb +67 -0
  112. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/delegation.rb +135 -0
  113. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/inclusion.rb +30 -0
  114. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/introspection.rb +90 -0
  115. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/loading.rb +23 -0
  116. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/model_naming.rb +25 -0
  117. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module/synchronization.rb +39 -0
  118. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/module.rb +23 -0
  119. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/name_error.rb +19 -0
  120. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/numeric/bytes.rb +50 -0
  121. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  122. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/numeric/time.rb +81 -0
  123. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/numeric.rb +9 -0
  124. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/blank.rb +76 -0
  125. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/conversions.rb +15 -0
  126. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/extending.rb +80 -0
  127. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  128. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/metaclass.rb +14 -0
  129. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/misc.rb +90 -0
  130. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object/singleton_class.rb +13 -0
  131. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/object.rb +7 -0
  132. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  133. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/pathname.rb +7 -0
  134. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/proc.rb +12 -0
  135. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/process/daemon.rb +25 -0
  136. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/process.rb +1 -0
  137. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  138. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/range/conversions.rb +27 -0
  139. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/range/include_range.rb +30 -0
  140. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/range/overlaps.rb +15 -0
  141. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/range.rb +11 -0
  142. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/rexml.rb +41 -0
  143. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/access.rb +106 -0
  144. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/behavior.rb +13 -0
  145. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/bytesize.rb +5 -0
  146. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/conversions.rb +28 -0
  147. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/filters.rb +26 -0
  148. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/inflections.rb +167 -0
  149. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/iterators.rb +23 -0
  150. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/multibyte.rb +81 -0
  151. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/output_safety.rb +112 -0
  152. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/starts_ends_with.rb +33 -0
  153. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string/xchar.rb +11 -0
  154. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/string.rb +24 -0
  155. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/symbol.rb +14 -0
  156. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/time/behavior.rb +13 -0
  157. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/time/calculations.rb +313 -0
  158. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/time/conversions.rb +90 -0
  159. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/time/zones.rb +86 -0
  160. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/time.rb +46 -0
  161. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/try.rb +36 -0
  162. data/vendor/activesupport-2.3.8/lib/active_support/core_ext/uri.rb +16 -0
  163. data/vendor/activesupport-2.3.8/lib/active_support/core_ext.rb +8 -0
  164. data/vendor/activesupport-2.3.8/lib/active_support/dependencies.rb +625 -0
  165. data/vendor/activesupport-2.3.8/lib/active_support/deprecation.rb +197 -0
  166. data/vendor/activesupport-2.3.8/lib/active_support/duration.rb +100 -0
  167. data/vendor/activesupport-2.3.8/lib/active_support/gzip.rb +25 -0
  168. data/vendor/activesupport-2.3.8/lib/active_support/inflections.rb +56 -0
  169. data/vendor/activesupport-2.3.8/lib/active_support/inflector.rb +409 -0
  170. data/vendor/activesupport-2.3.8/lib/active_support/json/backends/jsongem.rb +37 -0
  171. data/vendor/activesupport-2.3.8/lib/active_support/json/backends/yajl.rb +40 -0
  172. data/vendor/activesupport-2.3.8/lib/active_support/json/backends/yaml.rb +87 -0
  173. data/vendor/activesupport-2.3.8/lib/active_support/json/decoding.rb +50 -0
  174. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/date.rb +22 -0
  175. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/date_time.rb +22 -0
  176. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/enumerable.rb +17 -0
  177. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/false_class.rb +7 -0
  178. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/hash.rb +56 -0
  179. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/nil_class.rb +7 -0
  180. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/numeric.rb +21 -0
  181. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/object.rb +10 -0
  182. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/regexp.rb +9 -0
  183. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/string.rb +9 -0
  184. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/symbol.rb +5 -0
  185. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/time.rb +22 -0
  186. data/vendor/activesupport-2.3.8/lib/active_support/json/encoders/true_class.rb +7 -0
  187. data/vendor/activesupport-2.3.8/lib/active_support/json/encoding.rb +111 -0
  188. data/vendor/activesupport-2.3.8/lib/active_support/json/variable.rb +10 -0
  189. data/vendor/activesupport-2.3.8/lib/active_support/json.rb +2 -0
  190. data/vendor/activesupport-2.3.8/lib/active_support/locale/en.yml +33 -0
  191. data/vendor/activesupport-2.3.8/lib/active_support/memoizable.rb +100 -0
  192. data/vendor/activesupport-2.3.8/lib/active_support/message_encryptor.rb +70 -0
  193. data/vendor/activesupport-2.3.8/lib/active_support/message_verifier.rb +79 -0
  194. data/vendor/activesupport-2.3.8/lib/active_support/multibyte/chars.rb +707 -0
  195. data/vendor/activesupport-2.3.8/lib/active_support/multibyte/exceptions.rb +8 -0
  196. data/vendor/activesupport-2.3.8/lib/active_support/multibyte/unicode_database.rb +71 -0
  197. data/vendor/activesupport-2.3.8/lib/active_support/multibyte/utils.rb +60 -0
  198. data/vendor/activesupport-2.3.8/lib/active_support/multibyte.rb +57 -0
  199. data/vendor/activesupport-2.3.8/lib/active_support/option_merger.rb +23 -0
  200. data/vendor/activesupport-2.3.8/lib/active_support/ordered_hash.rb +158 -0
  201. data/vendor/activesupport-2.3.8/lib/active_support/ordered_options.rb +19 -0
  202. data/vendor/activesupport-2.3.8/lib/active_support/rescuable.rb +108 -0
  203. data/vendor/activesupport-2.3.8/lib/active_support/secure_random.rb +199 -0
  204. data/vendor/activesupport-2.3.8/lib/active_support/string_inquirer.rb +21 -0
  205. data/vendor/activesupport-2.3.8/lib/active_support/test_case.rb +40 -0
  206. data/vendor/activesupport-2.3.8/lib/active_support/testing/assertions.rb +79 -0
  207. data/vendor/activesupport-2.3.8/lib/active_support/testing/declarative.rb +21 -0
  208. data/vendor/activesupport-2.3.8/lib/active_support/testing/default.rb +9 -0
  209. data/vendor/activesupport-2.3.8/lib/active_support/testing/deprecation.rb +57 -0
  210. data/vendor/activesupport-2.3.8/lib/active_support/testing/performance.rb +452 -0
  211. data/vendor/activesupport-2.3.8/lib/active_support/testing/setup_and_teardown.rb +91 -0
  212. data/vendor/activesupport-2.3.8/lib/active_support/time_with_zone.rb +335 -0
  213. data/vendor/activesupport-2.3.8/lib/active_support/values/time_zone.rb +412 -0
  214. data/vendor/activesupport-2.3.8/lib/active_support/values/unicode_tables.dat +0 -0
  215. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  216. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  217. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  218. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  219. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  220. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  221. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  222. data/vendor/activesupport-2.3.8/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  223. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/missing.rb +67 -0
  224. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/store_procs.rb +38 -0
  225. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record/translation.rb +88 -0
  226. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/active_record.rb +66 -0
  227. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/base.rb +266 -0
  228. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/cache.rb +76 -0
  229. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/cascade.rb +58 -0
  230. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/chain.rb +75 -0
  231. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/cldr.rb +100 -0
  232. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/fallbacks.rb +69 -0
  233. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/fast.rb +69 -0
  234. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/gettext.rb +75 -0
  235. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/helpers.rb +68 -0
  236. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/interpolation_compiler.rb +119 -0
  237. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/links.rb +34 -0
  238. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/metadata.rb +73 -0
  239. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/pluralization.rb +57 -0
  240. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend/simple.rb +22 -0
  241. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/backend.rb +19 -0
  242. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/core_ext/hash/except.rb +8 -0
  243. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/core_ext/hash/slice.rb +8 -0
  244. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/core_ext/object/meta_class.rb +5 -0
  245. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/core_ext/string/interpolate.rb +99 -0
  246. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/exceptions.rb +61 -0
  247. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/gettext/po_parser.rb +329 -0
  248. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/gettext.rb +25 -0
  249. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/helpers/gettext.rb +65 -0
  250. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/helpers.rb +5 -0
  251. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale/fallbacks.rb +98 -0
  252. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/parents.rb +24 -0
  253. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/rfc4646.rb +76 -0
  254. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag/simple.rb +41 -0
  255. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale/tag.rb +28 -0
  256. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/locale.rb +6 -0
  257. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n/version.rb +3 -0
  258. data/vendor/activesupport-2.3.8/lib/active_support/vendor/i18n-0.3.7/i18n.rb +335 -0
  259. data/vendor/activesupport-2.3.8/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +1107 -0
  260. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +47 -0
  261. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +228 -0
  262. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +55 -0
  263. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +219 -0
  264. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +40 -0
  265. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +18 -0
  266. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  267. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  268. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  269. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  270. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
  271. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +23 -0
  272. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +23 -0
  273. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +283 -0
  274. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +136 -0
  275. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +204 -0
  276. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +161 -0
  277. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +27 -0
  278. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +274 -0
  279. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  280. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +194 -0
  281. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +22 -0
  282. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +35 -0
  283. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  284. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +139 -0
  285. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +144 -0
  286. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +131 -0
  287. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +282 -0
  288. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +30 -0
  289. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +74 -0
  290. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +205 -0
  291. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
  292. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +288 -0
  293. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +196 -0
  294. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +67 -0
  295. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  296. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +161 -0
  297. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  298. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  299. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +30 -0
  300. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  301. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  302. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  303. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  304. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  305. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +20 -0
  306. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  307. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +30 -0
  308. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  309. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  310. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  311. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  312. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  313. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +163 -0
  314. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +18 -0
  315. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  316. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  317. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  318. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +34 -0
  319. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  320. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +33 -0
  321. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +59 -0
  322. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  323. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  324. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +121 -0
  325. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  326. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  327. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  328. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  329. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  330. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  331. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  332. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  333. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  334. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  335. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  336. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  337. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +29 -0
  338. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +193 -0
  339. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  340. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +37 -0
  341. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +185 -0
  342. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +16 -0
  343. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  344. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +185 -0
  345. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  346. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +188 -0
  347. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  348. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +232 -0
  349. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  350. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +197 -0
  351. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  352. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +276 -0
  353. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  354. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  355. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +168 -0
  356. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  357. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  358. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +288 -0
  359. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +211 -0
  360. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +170 -0
  361. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +181 -0
  362. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +232 -0
  363. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +187 -0
  364. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +176 -0
  365. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +215 -0
  366. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  367. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +13 -0
  368. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +173 -0
  369. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  370. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  371. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +183 -0
  372. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  373. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  374. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  375. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  376. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  377. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +22 -0
  378. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  379. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  380. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +25 -0
  381. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  382. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  383. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  384. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  385. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +52 -0
  386. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +51 -0
  387. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +44 -0
  388. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +98 -0
  389. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +56 -0
  390. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +292 -0
  391. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +508 -0
  392. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +56 -0
  393. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +40 -0
  394. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +94 -0
  395. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +198 -0
  396. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +129 -0
  397. data/vendor/activesupport-2.3.8/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +33 -0
  398. data/vendor/activesupport-2.3.8/lib/active_support/vendor.rb +36 -0
  399. data/vendor/activesupport-2.3.8/lib/active_support/version.rb +9 -0
  400. data/vendor/activesupport-2.3.8/lib/active_support/whiny_nil.rb +64 -0
  401. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/jdom.rb +162 -0
  402. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/libxml.rb +73 -0
  403. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/libxmlsax.rb +74 -0
  404. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/nokogiri.rb +72 -0
  405. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/nokogirisax.rb +73 -0
  406. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini/rexml.rb +108 -0
  407. data/vendor/activesupport-2.3.8/lib/active_support/xml_mini.rb +31 -0
  408. data/vendor/activesupport-2.3.8/lib/active_support.rb +60 -0
  409. data/vendor/activesupport-2.3.8/lib/activesupport.rb +2 -0
  410. data/vendor/addressable-2.2.1/CHANGELOG +95 -0
  411. data/vendor/addressable-2.2.1/LICENSE +20 -0
  412. data/vendor/addressable-2.2.1/README +60 -0
  413. data/vendor/addressable-2.2.1/Rakefile +42 -0
  414. data/vendor/addressable-2.2.1/lib/addressable/idna.rb +4871 -0
  415. data/vendor/addressable-2.2.1/lib/addressable/template.rb +1049 -0
  416. data/vendor/addressable-2.2.1/lib/addressable/uri.rb +2250 -0
  417. data/vendor/addressable-2.2.1/lib/addressable/version.rb +36 -0
  418. data/vendor/addressable-2.2.1/spec/addressable/idna_spec.rb +194 -0
  419. data/vendor/addressable-2.2.1/spec/addressable/template_spec.rb +2152 -0
  420. data/vendor/addressable-2.2.1/spec/addressable/uri_spec.rb +4203 -0
  421. data/vendor/addressable-2.2.1/spec/data/rfc3986.txt +3419 -0
  422. data/vendor/addressable-2.2.1/tasks/clobber.rake +2 -0
  423. data/vendor/addressable-2.2.1/tasks/gem.rake +84 -0
  424. data/vendor/addressable-2.2.1/tasks/git.rake +40 -0
  425. data/vendor/addressable-2.2.1/tasks/metrics.rake +22 -0
  426. data/vendor/addressable-2.2.1/tasks/rdoc.rake +26 -0
  427. data/vendor/addressable-2.2.1/tasks/rubyforge.rake +89 -0
  428. data/vendor/addressable-2.2.1/tasks/spec.rake +47 -0
  429. data/vendor/addressable-2.2.1/tasks/yard.rake +26 -0
  430. data/vendor/addressable-2.2.1/website/index.html +110 -0
  431. data/vendor/api_ruby_client/Gemfile +10 -0
  432. data/vendor/api_ruby_client/LICENSE +20 -0
  433. data/vendor/api_ruby_client/README +39 -0
  434. data/vendor/api_ruby_client/Rakefile +89 -0
  435. data/vendor/api_ruby_client/abiquo.gemspec +43 -0
  436. data/vendor/api_ruby_client/examples/create_dc_and_hv.rb +38 -0
  437. data/vendor/api_ruby_client/examples/hypervisor_resource.rb +16 -0
  438. data/vendor/api_ruby_client/examples/rack_resource.rb +38 -0
  439. data/vendor/api_ruby_client/lib/abiquo.rb +201 -0
  440. data/vendor/api_ruby_client/lib/core_ext.rb +28 -0
  441. data/vendor/api_ruby_client/lib/to_xml.rb +22 -0
  442. data/vendor/api_ruby_client/spec/acceptance/create_resource_spec.rb +43 -0
  443. data/vendor/api_ruby_client/spec/acceptance/delete_resource_spec.rb +27 -0
  444. data/vendor/api_ruby_client/spec/acceptance/fetch_resource_collections_spec.rb +55 -0
  445. data/vendor/api_ruby_client/spec/acceptance/fetch_single_resources_spec.rb +47 -0
  446. data/vendor/api_ruby_client/spec/acceptance/from_xml_spec.rb +15 -0
  447. data/vendor/api_ruby_client/spec/acceptance/navigate_linked_resources_spec.rb +61 -0
  448. data/vendor/api_ruby_client/spec/acceptance/update_resource_spec.rb +26 -0
  449. data/vendor/api_ruby_client/spec/spec_helper.rb +32 -0
  450. data/vendor/api_ruby_client/spec/unit/to_xml_spec.rb +56 -0
  451. data/vendor/fattr-2.1.0/README +347 -0
  452. data/vendor/fattr-2.1.0/README.erb +82 -0
  453. data/vendor/fattr-2.1.0/Rakefile +242 -0
  454. data/vendor/fattr-2.1.0/a.rb +42 -0
  455. data/vendor/fattr-2.1.0/fattr.gemspec +29 -0
  456. data/vendor/fattr-2.1.0/lib/fattr.rb +193 -0
  457. data/vendor/fattr-2.1.0/samples/a.rb +21 -0
  458. data/vendor/fattr-2.1.0/samples/b.rb +22 -0
  459. data/vendor/fattr-2.1.0/samples/c.rb +12 -0
  460. data/vendor/fattr-2.1.0/samples/d.rb +34 -0
  461. data/vendor/fattr-2.1.0/samples/e.rb +17 -0
  462. data/vendor/fattr-2.1.0/samples/f.rb +21 -0
  463. data/vendor/fattr-2.1.0/samples/g.rb +15 -0
  464. data/vendor/fattr-2.1.0/samples/h.rb +29 -0
  465. data/vendor/fattr-2.1.0/test/fattr.rb +166 -0
  466. data/vendor/httpauth-0.1/LICENSE +16 -0
  467. data/vendor/httpauth-0.1/README +39 -0
  468. data/vendor/httpauth-0.1/Rakefile +76 -0
  469. data/vendor/httpauth-0.1/examples/client_digest_secure +132 -0
  470. data/vendor/httpauth-0.1/examples/server_digest_secure +47 -0
  471. data/vendor/httpauth-0.1/lib/httpauth/basic.rb +114 -0
  472. data/vendor/httpauth-0.1/lib/httpauth/constants.rb +14 -0
  473. data/vendor/httpauth-0.1/lib/httpauth/digest.rb +583 -0
  474. data/vendor/httpauth-0.1/lib/httpauth/exceptions.rb +6 -0
  475. data/vendor/httpauth-0.1/lib/httpauth.rb +4 -0
  476. data/vendor/options-2.3.0/README +186 -0
  477. data/vendor/options-2.3.0/README.erb +35 -0
  478. data/vendor/options-2.3.0/Rakefile +371 -0
  479. data/vendor/options-2.3.0/lib/options.rb +220 -0
  480. data/vendor/options-2.3.0/options.gemspec +26 -0
  481. data/vendor/options-2.3.0/samples/a.rb +15 -0
  482. data/vendor/options-2.3.0/samples/b.rb +50 -0
  483. data/vendor/options-2.3.0/samples/c.rb +20 -0
  484. data/vendor/options-2.3.0/samples/d.rb +17 -0
  485. data/vendor/options-2.3.0/spec/options_spec.rb +38 -0
  486. data/vendor/options-2.3.0/spec/spec_helper.rb +7 -0
  487. data/vendor/resourceful-1.0.1/History.txt +39 -0
  488. data/vendor/resourceful-1.0.1/MIT-LICENSE +21 -0
  489. data/vendor/resourceful-1.0.1/Manifest +43 -0
  490. data/vendor/resourceful-1.0.1/README.markdown +92 -0
  491. data/vendor/resourceful-1.0.1/Rakefile +91 -0
  492. data/vendor/resourceful-1.0.1/lib/resourceful/abstract_form_data.rb +18 -0
  493. data/vendor/resourceful-1.0.1/lib/resourceful/authentication_manager.rb +108 -0
  494. data/vendor/resourceful-1.0.1/lib/resourceful/cache_manager.rb +242 -0
  495. data/vendor/resourceful-1.0.1/lib/resourceful/exceptions.rb +34 -0
  496. data/vendor/resourceful-1.0.1/lib/resourceful/header.rb +355 -0
  497. data/vendor/resourceful-1.0.1/lib/resourceful/http_accessor.rb +103 -0
  498. data/vendor/resourceful-1.0.1/lib/resourceful/memcache_cache_manager.rb +75 -0
  499. data/vendor/resourceful-1.0.1/lib/resourceful/multipart_form_data.rb +46 -0
  500. data/vendor/resourceful-1.0.1/lib/resourceful/net_http_adapter.rb +84 -0
  501. data/vendor/resourceful-1.0.1/lib/resourceful/request.rb +235 -0
  502. data/vendor/resourceful-1.0.1/lib/resourceful/resource.rb +179 -0
  503. data/vendor/resourceful-1.0.1/lib/resourceful/response.rb +221 -0
  504. data/vendor/resourceful-1.0.1/lib/resourceful/simple.rb +36 -0
  505. data/vendor/resourceful-1.0.1/lib/resourceful/stubbed_resource_proxy.rb +47 -0
  506. data/vendor/resourceful-1.0.1/lib/resourceful/urlencoded_form_data.rb +17 -0
  507. data/vendor/resourceful-1.0.1/lib/resourceful/util.rb +6 -0
  508. data/vendor/resourceful-1.0.1/lib/resourceful.rb +26 -0
  509. data/vendor/resourceful-1.0.1/resourceful.gemspec +51 -0
  510. data/vendor/resourceful-1.0.1/spec/acceptance/authorization_spec.rb +16 -0
  511. data/vendor/resourceful-1.0.1/spec/acceptance/caching_spec.rb +190 -0
  512. data/vendor/resourceful-1.0.1/spec/acceptance/header_spec.rb +24 -0
  513. data/vendor/resourceful-1.0.1/spec/acceptance/redirecting_spec.rb +12 -0
  514. data/vendor/resourceful-1.0.1/spec/acceptance/resource_spec.rb +84 -0
  515. data/vendor/resourceful-1.0.1/spec/acceptance/resourceful_spec.rb +56 -0
  516. data/vendor/resourceful-1.0.1/spec/acceptance_shared_specs.rb +44 -0
  517. data/vendor/resourceful-1.0.1/spec/caching_spec.rb +89 -0
  518. data/vendor/resourceful-1.0.1/spec/old_acceptance_specs.rb +378 -0
  519. data/vendor/resourceful-1.0.1/spec/resourceful/header_spec.rb +153 -0
  520. data/vendor/resourceful-1.0.1/spec/resourceful/http_accessor_spec.rb +56 -0
  521. data/vendor/resourceful-1.0.1/spec/resourceful/multipart_form_data_spec.rb +77 -0
  522. data/vendor/resourceful-1.0.1/spec/resourceful/resource_spec.rb +20 -0
  523. data/vendor/resourceful-1.0.1/spec/resourceful/response_spec.rb +51 -0
  524. data/vendor/resourceful-1.0.1/spec/resourceful/urlencoded_form_data_spec.rb +44 -0
  525. data/vendor/resourceful-1.0.1/spec/resourceful_spec.rb +79 -0
  526. data/vendor/resourceful-1.0.1/spec/simple_sinatra_server.rb +74 -0
  527. data/vendor/resourceful-1.0.1/spec/simple_sinatra_server_spec.rb +98 -0
  528. data/vendor/resourceful-1.0.1/spec/spec.opts +3 -0
  529. data/vendor/resourceful-1.0.1/spec/spec_helper.rb +31 -0
  530. metadata +645 -0
@@ -0,0 +1,355 @@
1
+ require 'options'
2
+ require 'set'
3
+
4
+ # Represents the header fields of an HTTP message. To access a field
5
+ # you can use `#[]` and `#[]=`. For example, to get the content type
6
+ # of a response you can do
7
+ #
8
+ # response.header['Content-Type'] # => "application/xml"
9
+ #
10
+ # Lookups and modifications done in this way are case insensitive, so
11
+ # 'Content-Type', 'content-type' and :content_type are all equivalent.
12
+ #
13
+ # Multi-valued fields
14
+ # -------------------
15
+ #
16
+ # Multi-value fields (e.g. Accept) are always returned as an Array
17
+ # regardless of the number of values, if the field is present.
18
+ # Single-value fields (e.g. Content-Type) are always returned as
19
+ # strings. The multi/single valueness of a header field is determined
20
+ # by the way it is defined in the HTTP spec. Unknown fields are
21
+ # treated as multi-valued.
22
+ #
23
+ # (This behavior is new in 0.6 and may be slightly incompatible with
24
+ # the way previous versions worked in some situations.)
25
+ #
26
+ # For example
27
+ #
28
+ # h = Resourceful::Header.new
29
+ # h['Accept'] = "application/xml"
30
+ # h['Accept'] # => ["application/xml"]
31
+ #
32
+ module Resourceful
33
+ class Header
34
+ include Enumerable
35
+
36
+ def initialize(hash={})
37
+ @raw_fields = {}
38
+ hash.each { |k, v| self[k] = v }
39
+ end
40
+
41
+ def to_hash
42
+ @raw_fields.dup
43
+ end
44
+
45
+ def [](k)
46
+ field_def(k).get_from(@raw_fields)
47
+ end
48
+
49
+ def []=(k, v)
50
+ field_def(k).set_to(v, @raw_fields)
51
+ end
52
+
53
+ def delete(k)
54
+ field_def(k).delete(@raw_fields)
55
+ end
56
+
57
+ def has_key?(k)
58
+ field_def(k).exists_in?(@raw_fields)
59
+ end
60
+ alias has_field? has_key?
61
+
62
+ def each(&blk)
63
+ @raw_fields.each(&blk)
64
+ end
65
+
66
+ # Iterates through the fields with values provided as message
67
+ # ready strings.
68
+ def each_field(&blk)
69
+ each do |k,v|
70
+ str_v = if field_def(k).multivalued?
71
+ v.join(', ')
72
+ else
73
+ v.to_s
74
+ end
75
+
76
+ yield k, str_v
77
+ end
78
+ end
79
+
80
+ def merge!(another)
81
+ another.each do |k,v|
82
+ self[k] = v
83
+ end
84
+ self
85
+ end
86
+
87
+ def delete(k)
88
+ @raw_fields.delete(field_def(k).name)
89
+ end
90
+
91
+ def merge(another)
92
+ self.class.new(self).merge!(another)
93
+ end
94
+
95
+ def reverse_merge(another)
96
+ self.class.new(another).merge!(self)
97
+ end
98
+
99
+ def dup
100
+ self.class.new(@raw_fields.dup)
101
+ end
102
+
103
+ # Class to handle the details of each type of field.
104
+ class FieldDesc
105
+ include Comparable
106
+
107
+ ##
108
+ attr_reader :name
109
+
110
+ # Create a new header field descriptor.
111
+ #
112
+ # @param [String] name The canonical name of this field.
113
+ #
114
+ # @param [Hash] options hash containing extra information about
115
+ # this header fields. Valid keys are:
116
+ #
117
+ # `:multivalued`
118
+ # `:multivalue`
119
+ # `:repeatable`
120
+ # : Values of this field are comma separated list of values.
121
+ # (n#VALUE per HTTP spec.) Default: false
122
+ #
123
+ # `:hop_by_hop`
124
+ # : True if the header is a hop-by-hop header. Default: false
125
+ #
126
+ # `:modifiable`
127
+ # : False if the header should not be modified by intermediates or caches. Default: true
128
+ #
129
+ def initialize(name, options = {})
130
+ @name = name
131
+ options = Options.for(options).validate(:repeatable, :hop_by_hop, :modifiable)
132
+
133
+ @repeatable = options.getopt([:repeatable, :multivalue, :multivalued]) || false
134
+ @hop_by_hop = options.getopt(:hop_by_hop) || false
135
+ @modifiable = options.getopt(:modifiable, true)
136
+ end
137
+
138
+ def repeatable?
139
+ @repeatable
140
+ end
141
+ alias multivalued? repeatable?
142
+
143
+ def hop_by_hop?
144
+ @hop_by_hop
145
+ end
146
+
147
+ def modifiable?
148
+ @modifiable
149
+ end
150
+
151
+ def get_from(raw_fields_hash)
152
+ raw_fields_hash[name]
153
+ end
154
+
155
+ def set_to(value, raw_fields_hash)
156
+ raw_fields_hash[name] = if multivalued?
157
+ Array(value).map{|v| v.split(/,\s*/)}.flatten
158
+ elsif value.kind_of?(Array)
159
+ raise ArgumentError, "#{name} field may only have one value" if value.size > 1
160
+ value.first
161
+ else
162
+ value
163
+ end
164
+ end
165
+
166
+ def delete(raw_fields_hash)
167
+ raw_fields_hash.delete(name)
168
+ end
169
+
170
+ def exists_in?(raw_fields_hash)
171
+ raw_fields_hash.has_key?(name)
172
+ end
173
+
174
+ def <=>(another)
175
+ name <=> another.name
176
+ end
177
+
178
+ def ==(another)
179
+ name_pattern === another.to_s
180
+ end
181
+ alias eql? ==
182
+
183
+ def ===(another)
184
+ if another.kind_of?(FieldDesc)
185
+ self == another
186
+ else
187
+ name_pattern === another
188
+ end
189
+ end
190
+
191
+ def name_pattern
192
+ @name_pattern ||= Regexp.new('^' + name.gsub('-', '[_-]') + '$', Regexp::IGNORECASE)
193
+ end
194
+
195
+ def methodized_name
196
+ @methodized_name ||= name.downcase.gsub('-', '_')
197
+ end
198
+
199
+ def constantized_name
200
+ @constantized_name ||= name.upcase.gsub('-', '_')
201
+ end
202
+
203
+ alias to_s name
204
+
205
+ def accessor_module
206
+ @accessor_module ||= begin
207
+ Module.new.tap{|m| m.module_eval(<<-RUBY)}
208
+ #{constantized_name} = '#{name}'
209
+
210
+ def #{methodized_name} # def accept
211
+ self[#{constantized_name}] # self[ACCEPT]
212
+ end # end
213
+
214
+ def #{methodized_name}=(val) # def accept=(val)
215
+ self[#{constantized_name}] = val # self[ACCEPT] = val
216
+ end # end
217
+ RUBY
218
+ end
219
+ end
220
+
221
+ def hash
222
+ @name.hash
223
+ end
224
+
225
+ # Yields each commonly used lookup key for this header field.
226
+ def lookup_keys(&blk)
227
+ yield name
228
+ yield name.upcase
229
+ yield name.downcase
230
+ yield methodized_name
231
+ yield methodized_name.to_sym
232
+ yield constantized_name
233
+ yield constantized_name.to_sym
234
+ end
235
+ end # FieldDesc
236
+
237
+ @@known_fields = Set.new
238
+ @@known_fields_lookup = Hash.new
239
+
240
+ # Declares a common header field. Header fields do not have to be
241
+ # defined this way but accessing them is easier, safer and faster
242
+ # if you do. Declaring a field does the following things:
243
+ #
244
+ # * defines accessor methods (e.g. `#content_type` and
245
+ # `#content_type=`) on `Header`
246
+ #
247
+ # * defines constant that can be used to reference there field
248
+ # name (e.g. `some_header[Header::CONTENT_TYPE]`)
249
+ #
250
+ # * includes the field in the appropriate *_fields groups (e.g. `Header.non_modifiable_fields`)
251
+ #
252
+ # * provides improved multiple value parsing
253
+ #
254
+ # Create a new header field descriptor.
255
+ #
256
+ # @param [String] name The canonical name of this field.
257
+ #
258
+ # @param [Hash] options hash containing extra information about
259
+ # this header fields. Valid keys are:
260
+ #
261
+ # `:multivalued`
262
+ # `:multivalue`
263
+ # `:repeatable`
264
+ # : Values of this field are comma separated list of values.
265
+ # (n#VALUE per HTTP spec.) Default: false
266
+ #
267
+ # `:hop_by_hop`
268
+ # : True if the header is a hop-by-hop header. Default: false
269
+ #
270
+ # `:modifiable`
271
+ # : False if the header should not be modified by intermediates or caches. Default: true
272
+ #
273
+ def self.header_field(name, options = {})
274
+ hfd = FieldDesc.new(name, options)
275
+
276
+ @@known_fields << hfd
277
+ hfd.lookup_keys do |a_key|
278
+ @@known_fields_lookup[a_key] = hfd
279
+ end
280
+
281
+ include(hfd.accessor_module)
282
+ end
283
+
284
+ def self.hop_by_hop_fields
285
+ @@known_fields.select{|hfd| hfd.hop_by_hop?}
286
+ end
287
+
288
+ def self.non_modifiable_fields
289
+ @@known_fields.reject{|hfd| hfd.modifiable?}
290
+ end
291
+
292
+ protected
293
+
294
+ # ---
295
+ #
296
+ # We have to fall back on a slow iteration to find the header
297
+ # field some times because field names are
298
+ def field_def(name)
299
+ @@known_fields_lookup[name] || # the fast way
300
+ @@known_fields.find{|hfd| hfd === name} || # the slow way
301
+ FieldDesc.new(name.to_s.downcase.gsub(/^.|[-_\s]./) { |x| x.upcase }.gsub('_', '-'), :repeatable => true) # make up as we go
302
+ end
303
+
304
+ header_field('Accept', :repeatable => true)
305
+ header_field('Accept-Charset', :repeatable => true)
306
+ header_field('Accept-Encoding', :repeatable => true)
307
+ header_field('Accept-Language', :repeatable => true)
308
+ header_field('Accept-Ranges', :repeatable => true)
309
+ header_field('Age')
310
+ header_field('Allow', :repeatable => true)
311
+ header_field('Authorization', :repeatable => true)
312
+ header_field('Cache-Control', :repeatable => true)
313
+ header_field('Connection', :hop_by_hop => true)
314
+ header_field('Content-Encoding', :repeatable => true)
315
+ header_field('Content-Language', :repeatable => true)
316
+ header_field('Content-Length')
317
+ header_field('Content-Location', :modifiable => false)
318
+ header_field('Content-MD5', :modifiable => false)
319
+ header_field('Content-Range')
320
+ header_field('Content-Type')
321
+ header_field('Date')
322
+ header_field('ETag', :modifiable => false)
323
+ header_field('Expect', :repeatable => true)
324
+ header_field('Expires', :modifiable => false)
325
+ header_field('From')
326
+ header_field('Host')
327
+ header_field('If-Match', :repeatable => true)
328
+ header_field('If-Modified-Since')
329
+ header_field('If-None-Match', :repeatable => true)
330
+ header_field('If-Range')
331
+ header_field('If-Unmodified-Since')
332
+ header_field('Keep-Alive', :hop_by_hop => true)
333
+ header_field('Last-Modified', :modifiable => false)
334
+ header_field('Location')
335
+ header_field('Max-Forwards')
336
+ header_field('Pragma', :repeatable => true)
337
+ header_field('Proxy-Authenticate', :hop_by_hop => true)
338
+ header_field('Proxy-Authorization', :hop_by_hop => true)
339
+ header_field('Range')
340
+ header_field('Referer')
341
+ header_field('Retry-After')
342
+ header_field('Server')
343
+ header_field('TE', :repeatable => true, :hop_by_hop => true)
344
+ header_field('Trailer', :repeatable => true, :hop_by_hop => true)
345
+ header_field('Transfer-Encoding', :repeatable => true, :hop_by_hop => true)
346
+ header_field('Upgrade', :repeatable => true, :hop_by_hop => true)
347
+ header_field('User-Agent')
348
+ header_field('Vary', :repeatable => true)
349
+ header_field('Via', :repeatable => true)
350
+ header_field('Warning', :repeatable => true)
351
+ header_field('WWW-Authenticate', :repeatable => true)
352
+ end
353
+ end
354
+
355
+
@@ -0,0 +1,103 @@
1
+ require 'net/http'
2
+
3
+ require 'resourceful/authentication_manager'
4
+ require 'resourceful/cache_manager'
5
+ require 'resourceful/resource'
6
+
7
+ require 'options'
8
+
9
+ module Resourceful
10
+ # This is an imitation Logger used when no real logger is
11
+ # registered. This allows most of the code to assume that there
12
+ # is always a logger available, which significantly improved the
13
+ # readability of the logging related code.
14
+ class BitBucketLogger
15
+ def warn(*args); end
16
+ def info(*args); end
17
+ def debug(*args); end
18
+ end
19
+
20
+ # This is the simplest logger. It just writes everything to STDOUT.
21
+ class StdOutLogger
22
+ def warn(*args); puts args; end
23
+ def info(*args); puts args; end
24
+ def debug(*args); puts args; end
25
+ end
26
+
27
+ # This class provides a simple interface to the functionality
28
+ # provided by the Resourceful library. Conceptually this object
29
+ # acts a collection of all the resources available via HTTP.
30
+ class HttpAccessor
31
+ # A logger object to which messages about the activities of this
32
+ # object will be written. This should be an object that responds
33
+ # to +#info(message)+ and +#debug(message)+.
34
+ #
35
+ # Errors will not be logged. Instead an exception will be raised
36
+ # and the application code should log it if appropriate.
37
+ attr_accessor :logger, :cache_manager
38
+
39
+ attr_reader :auth_manager
40
+ attr_reader :user_agent_tokens
41
+
42
+ ##
43
+ # The adapter this accessor will use to make the actual HTTP requests.
44
+ attr_reader :http_adapter
45
+
46
+ # Initializes a new HttpAccessor. Valid options:
47
+ #
48
+ # `:logger`
49
+ # : A Logger object that the new HTTP accessor should send log messages
50
+ #
51
+ # `:user_agent`
52
+ # : One or more additional user agent tokens to added to the user agent string.
53
+ #
54
+ # `:cache_manager`
55
+ # : The cache manager this accessor should use.
56
+ #
57
+ # `:authenticator`
58
+ # : Add a single authenticator for this accessor.
59
+ #
60
+ # `:authenticators`
61
+ # : Enumerable of the authenticators for this accessor.
62
+ #
63
+ # `http_adapter`
64
+ # : The HttpAdapter to be used by this accessor
65
+ #
66
+ #
67
+ def initialize(options = {})
68
+ options = Options.for(options).validate(:logger, :user_agent, :cache_manager, :authenticator, :authenticators, :http_adapter)
69
+
70
+ @user_agent_tokens = [RESOURCEFUL_USER_AGENT_TOKEN]
71
+ @auth_manager = AuthenticationManager.new()
72
+
73
+
74
+ @user_agent_tokens.push(*Array(options.getopt(:user_agent)).flatten.reverse)
75
+ self.logger = options.getopt(:logger) || BitBucketLogger.new
76
+ @cache_manager = options.getopt(:cache_manager) || NullCacheManager.new
77
+ @http_adapter = options.getopt(:http_adapter) || NetHttpAdapter.new
78
+
79
+ Array(options.getopt([:authenticator, :authenticators])).flatten.each do |an_authenticator|
80
+ add_authenticator(an_authenticator)
81
+ end
82
+ end
83
+
84
+ # Returns the string that identifies this HTTP accessor. If you
85
+ # want to add a token to the user agent string simply add the new
86
+ # token to the end of +#user_agent_tokens+.
87
+ def user_agent_string
88
+ user_agent_tokens.reverse.join(' ')
89
+ end
90
+
91
+ # Returns a resource object representing the resource indicated
92
+ # by the specified URI. A resource object will be created if necessary.
93
+ def resource(uri, opts = {})
94
+ resource = Resource.new(self, uri, opts)
95
+ end
96
+ alias [] resource
97
+
98
+ # Adds an Authenticator to the set used by the accessor.
99
+ def add_authenticator(an_authenticator)
100
+ auth_manager.add_auth_handler(an_authenticator)
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,75 @@
1
+ require "resourceful/cache_manager"
2
+
3
+ require 'memcache'
4
+
5
+ module Resourceful
6
+ class MemcacheCacheManager < AbstractCacheManager
7
+
8
+ # Create a new Memcached backed cache manager
9
+ #
10
+ # @param [*String] memcache_servers
11
+ # list of all Memcached servers this cache manager should use.
12
+ def initialize(*memcache_servers)
13
+ @memcache = MemCache.new(memcache_servers, :multithread => true)
14
+ end
15
+
16
+ # Finds a previously cached response to the provided request. The
17
+ # response returned may be stale.
18
+ #
19
+ # @param [Resourceful::Request] request
20
+ # The request for which we are looking for a response.
21
+ #
22
+ # @return [Resourceful::Response, nil]
23
+ # A (possibly stale) response for the request provided or nil if
24
+ # no matching response is found.
25
+ def lookup(request)
26
+ resp = cache_entries_for(request)[request]
27
+ return if resp.nil?
28
+
29
+ resp.authoritative = false
30
+
31
+ resp
32
+ end
33
+
34
+ # Store a response in the cache.
35
+ #
36
+ # This method is smart enough to not store responses that cannot be
37
+ # cached (Vary: * or Cache-Control: no-cache, private, ...)
38
+ #
39
+ # @param [Resourceful::Request] request
40
+ # The request used to obtain the response. This is needed so the
41
+ # values from the response's Vary header can be stored.
42
+ # @param [Resourceful::Response] response
43
+ # The response to be stored.
44
+ def store(request, response)
45
+ return unless response.cachable?
46
+
47
+ entries = cache_entries_for(request)
48
+ entries[request] = response
49
+
50
+ @memcache[request.to_mc_key] = entries
51
+ end
52
+
53
+ # Invalidates a all cached entries for a uri.
54
+ #
55
+ # This is used, for example, to invalidate the cache for a resource
56
+ # that gets POSTed to.
57
+ #
58
+ # @param [String] uri
59
+ # The uri of the resource to be invalidated
60
+ def invalidate(uri)
61
+ @memcache.delete(uri_hash(uri))
62
+ end
63
+
64
+
65
+ private
66
+
67
+ ##
68
+ # The memcache proxy.
69
+ attr_reader :memcache
70
+
71
+ def cache_entries_for(a_request)
72
+ @memcache.get(uri_hash(a_request.uri)) || Resourceful::CacheEntryCollection.new
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,46 @@
1
+ require 'resourceful/abstract_form_data'
2
+
3
+ module Resourceful
4
+ class MultipartFormData < AbstractFormData
5
+ FileParamValue = Struct.new(:content, :file_name, :content_type)
6
+
7
+ def add_file(name, file_name, content_type="application/octet-stream")
8
+ add(name, FileParamValue.new(File.new(file_name, 'r'), File.basename(file_name), content_type))
9
+ end
10
+
11
+ def content_type
12
+ "multipart/form-data; boundary=#{boundary}"
13
+ end
14
+
15
+ def read
16
+ StringIO.new.tap do |out|
17
+ first = true
18
+ form_data.each do |key, val|
19
+ out << "\r\n" unless first
20
+ out << "--" << boundary
21
+ out << "\r\nContent-Disposition: form-data; name=\"#{key}\""
22
+ if val.kind_of?(FileParamValue)
23
+ out << "; filename=\"#{val.file_name}\""
24
+ out << "\r\nContent-Type: #{val.content_type}"
25
+ end
26
+ out << "\r\n\r\n"
27
+ if val.kind_of?(FileParamValue)
28
+ out << val.content.read
29
+ else
30
+ out << val.to_s
31
+ end
32
+ first = false
33
+ end
34
+ out << "\r\n--#{boundary}--"
35
+ end.string
36
+ end
37
+
38
+ protected
39
+
40
+ def boundary
41
+ @boundary ||= (0..30).map{BOUNDARY_CHARS[rand(BOUNDARY_CHARS.length)]}.join
42
+ end
43
+
44
+ BOUNDARY_CHARS = [('a'..'z').to_a,('A'..'Z').to_a,(0..9).to_a].flatten
45
+ end
46
+ end
@@ -0,0 +1,84 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'addressable/uri'
4
+
5
+ require 'pathname'
6
+ require 'resourceful/header'
7
+
8
+ module Addressable
9
+ class URI
10
+ def absolute_path
11
+ absolute_path = ""
12
+ absolute_path << self.path.to_s
13
+ absolute_path << "?#{self.query}" if self.query != nil
14
+ absolute_path << "##{self.fragment}" if self.fragment != nil
15
+ return absolute_path
16
+ end
17
+ end
18
+ end
19
+
20
+ module Resourceful
21
+
22
+ class NetHttpAdapter
23
+ # Make an HTTP request using the standard library net/http.
24
+ #
25
+ # Will use a proxy defined in the http_proxy environment variable, if set.
26
+ #
27
+ # @param [#read] body
28
+ # An IO-ish thing containing the body of the request
29
+ #
30
+ def make_request(method, uri, body = nil, header = nil)
31
+ uri = uri.is_a?(Addressable::URI) ? uri : Addressable::URI.parse(uri)
32
+
33
+ if [:put, :post].include? method
34
+ body = body ? body.read : ""
35
+ header[:content_length] = body.size
36
+ end
37
+
38
+ req = net_http_request_class(method).new(uri.absolute_path)
39
+ header.each_field { |k,v| req[k] = v } if header
40
+ https = ("https" == uri.scheme)
41
+ conn_class = proxy_details ? Net::HTTP.Proxy(*proxy_details) : Net::HTTP
42
+ conn = conn_class.new(uri.host, uri.port || (https ? 443 : 80))
43
+ conn.use_ssl = https
44
+ begin
45
+ conn.start
46
+ res = if body
47
+ conn.request(req, body)
48
+ else
49
+ conn.request(req)
50
+ end
51
+ ensure
52
+ conn.finish if conn.started?
53
+ end
54
+
55
+ [ Integer(res.code),
56
+ Resourceful::Header.new(res.header.to_hash),
57
+ res.body
58
+ ]
59
+ ensure
60
+
61
+ end
62
+
63
+ private
64
+
65
+ # Parse proxy details from http_proxy environment variable
66
+ def proxy_details
67
+ proxy = Addressable::URI.parse(ENV["http_proxy"])
68
+ [proxy.host, proxy.port, proxy.user, proxy.password] if proxy
69
+ end
70
+
71
+ def net_http_request_class(method)
72
+ case method
73
+ when :get then Net::HTTP::Get
74
+ when :head then Net::HTTP::Head
75
+ when :post then Net::HTTP::Post
76
+ when :put then Net::HTTP::Put
77
+ when :delete then Net::HTTP::Delete
78
+ end
79
+
80
+ end
81
+
82
+ end
83
+
84
+ end