azure 0.1.1 → 0.5.0

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 (341) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/ChangeLog.txt +5 -0
  4. data/Gemfile +16 -3
  5. data/README.md +344 -2
  6. data/Rakefile +66 -37
  7. data/azure.gemspec +30 -11
  8. data/lib/azure.rb +35 -4
  9. data/lib/azure/blob/blob.rb +32 -0
  10. data/lib/azure/blob/blob_service.rb +1423 -0
  11. data/lib/azure/blob/block.rb +31 -0
  12. data/lib/azure/blob/container.rb +32 -0
  13. data/lib/azure/blob/serialization.rb +285 -0
  14. data/lib/azure/core.rb +32 -0
  15. data/lib/azure/core/auth/authorizer.rb +36 -0
  16. data/lib/azure/core/auth/shared_key.rb +21 -6
  17. data/lib/azure/core/auth/shared_key_lite.rb +17 -3
  18. data/lib/azure/core/auth/signer.rb +48 -0
  19. data/lib/azure/core/configuration.rb +152 -0
  20. data/lib/azure/core/error.rb +22 -0
  21. data/lib/azure/core/filtered_service.rb +44 -0
  22. data/lib/azure/core/http/debug_filter.rb +36 -0
  23. data/lib/azure/core/http/http_error.rb +84 -0
  24. data/lib/azure/core/http/http_filter.rb +53 -0
  25. data/lib/azure/core/http/http_request.rb +157 -0
  26. data/lib/azure/core/http/http_response.rb +133 -0
  27. data/lib/azure/core/http/retry_policy.rb +68 -0
  28. data/lib/azure/core/http/signer_filter.rb +34 -0
  29. data/lib/azure/core/service.rb +38 -32
  30. data/lib/azure/core/signed_service.rb +43 -0
  31. data/lib/azure/queue/message.rb +30 -0
  32. data/lib/azure/queue/queue.rb +29 -0
  33. data/lib/azure/queue/queue_service.rb +568 -0
  34. data/lib/azure/queue/serialization.rb +103 -0
  35. data/lib/azure/service/access_policy.rb +26 -0
  36. data/lib/azure/service/enumeration_results.rb +21 -0
  37. data/lib/azure/service/logging.rb +32 -0
  38. data/lib/azure/service/metrics.rb +31 -0
  39. data/lib/azure/service/retention_policy.rb +25 -0
  40. data/lib/azure/service/serialization.rb +240 -0
  41. data/lib/azure/service/signed_identifier.rb +30 -0
  42. data/lib/azure/service/storage_service.rb +79 -0
  43. data/lib/azure/service/storage_service_properties.rb +32 -0
  44. data/lib/azure/service_bus/action.rb +21 -0
  45. data/lib/azure/service_bus/auth/wrap_service.rb +59 -46
  46. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  47. data/lib/azure/service_bus/brokered_message.rb +36 -51
  48. data/lib/azure/service_bus/brokered_message_serializer.rb +48 -34
  49. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  50. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  51. data/lib/azure/service_bus/false_filter.rb +38 -0
  52. data/lib/azure/service_bus/filter.rb +21 -0
  53. data/lib/azure/{core/utils → service_bus}/interval.rb +29 -22
  54. data/lib/azure/service_bus/queue.rb +230 -0
  55. data/lib/azure/service_bus/resource.rb +109 -0
  56. data/lib/azure/service_bus/rule.rb +98 -0
  57. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  58. data/lib/azure/service_bus/serialization.rb +160 -0
  59. data/lib/azure/service_bus/service_bus_service.rb +819 -12
  60. data/lib/azure/service_bus/sql_filter.rb +50 -0
  61. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  62. data/lib/azure/service_bus/subscription.rb +184 -0
  63. data/lib/azure/service_bus/topic.rb +187 -0
  64. data/lib/azure/service_bus/true_filter.rb +38 -0
  65. data/lib/azure/{tables → table}/auth/shared_key.rb +33 -12
  66. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  67. data/lib/azure/table/batch.rb +330 -0
  68. data/lib/azure/table/batch_response.rb +117 -0
  69. data/lib/azure/table/edmtype.rb +127 -0
  70. data/lib/azure/table/entity.rb +31 -0
  71. data/lib/azure/table/guid.rb +24 -0
  72. data/lib/azure/table/query.rb +112 -0
  73. data/lib/azure/table/serialization.rb +105 -0
  74. data/lib/azure/table/table_service.rb +557 -0
  75. data/lib/azure/version.rb +31 -0
  76. data/test/fixtures/container_acl.xml +11 -0
  77. data/test/fixtures/{error.xml → http_error.xml} +0 -0
  78. data/test/fixtures/list_blobs.xml +121 -0
  79. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  80. data/test/fixtures/list_blocks_all.xml +23 -0
  81. data/test/fixtures/list_blocks_committed.xml +13 -0
  82. data/test/fixtures/list_containers.xml +38 -0
  83. data/test/fixtures/list_page_ranges.xml +11 -0
  84. data/test/fixtures/logging.xml +11 -0
  85. data/test/fixtures/metrics.xml +10 -0
  86. data/test/fixtures/queues.xml +1 -1
  87. data/test/fixtures/retention_policy.xml +5 -0
  88. data/test/fixtures/storage_service_properties.xml +23 -0
  89. data/test/integration/blob/blob_metadata_test.rb +75 -0
  90. data/test/integration/blob/blob_pages_test.rb +119 -0
  91. data/test/integration/blob/blob_properties_test.rb +77 -0
  92. data/test/integration/blob/block_blob_test.rb +254 -0
  93. data/test/integration/blob/container/container_acl_test.rb +69 -0
  94. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  95. data/test/integration/blob/container/create_container_test.rb +60 -0
  96. data/test/integration/blob/container/delete_container_test.rb +39 -0
  97. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  98. data/test/integration/blob/container/list_containers_test.rb +79 -0
  99. data/test/integration/blob/container/root_container_test.rb +50 -0
  100. data/test/integration/blob/copy_blob_test.rb +113 -0
  101. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  102. data/test/integration/blob/create_page_blob_test.rb +83 -0
  103. data/test/integration/blob/delete_blob_test.rb +159 -0
  104. data/test/integration/blob/get_blob_test.rb +65 -0
  105. data/test/integration/blob/informative_errors_test.rb +39 -0
  106. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  107. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  108. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  109. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  110. data/test/integration/blob/list_blobs_test.rb +113 -0
  111. data/test/integration/queue/clear_messages_test.rb +42 -0
  112. data/test/integration/queue/create_message_test.rb +75 -0
  113. data/test/integration/queue/create_queue_test.rb +50 -0
  114. data/test/integration/queue/delete_message_test.rb +67 -0
  115. data/test/integration/queue/delete_queue_test.rb +45 -0
  116. data/test/integration/queue/informative_errors_test.rb +42 -0
  117. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  118. data/test/integration/queue/list_messages_test.rb +79 -0
  119. data/test/integration/queue/list_queues_test.rb +44 -0
  120. data/test/integration/queue/peek_messages_test.rb +59 -0
  121. data/test/integration/queue/queue_metadata_test.rb +40 -0
  122. data/test/integration/queue/update_message_test.rb +74 -0
  123. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  124. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  125. data/test/integration/service_bus/queues_test.rb +266 -0
  126. data/test/integration/service_bus/rules_test.rb +145 -0
  127. data/test/integration/service_bus/scenario_test.rb +102 -0
  128. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  129. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  130. data/test/integration/service_bus/topics_test.rb +129 -0
  131. data/test/integration/table/create_table_test.rb +36 -0
  132. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  133. data/test/integration/table/delete_entity_test.rb +94 -0
  134. data/test/integration/table/delete_table_test.rb +40 -0
  135. data/test/integration/table/get_table_test.rb +37 -0
  136. data/test/integration/table/informative_errors_test.rb +39 -0
  137. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  138. data/test/integration/table/insert_entity_test.rb +88 -0
  139. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  140. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  141. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  142. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  143. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  144. data/test/integration/table/merge_entity_test.rb +113 -0
  145. data/test/integration/table/query_entities_test.rb +195 -0
  146. data/test/integration/table/query_tables_test.rb +43 -0
  147. data/test/integration/table/query_test.rb +251 -0
  148. data/test/integration/table/table_acl_test.rb +52 -0
  149. data/test/integration/table/update_entity_batch_test.rb +149 -0
  150. data/test/integration/table/update_entity_test.rb +131 -0
  151. data/test/integration/test_helper.rb +23 -9
  152. data/test/support/env.rb +15 -1
  153. data/test/support/fixtures.rb +14 -0
  154. data/test/support/name_generator.rb +74 -0
  155. data/test/support/stubs.rb +14 -0
  156. data/test/test_helper.rb +43 -3
  157. data/test/unit/blob/blob_service_test.rb +1947 -0
  158. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  159. data/test/unit/core/auth/shared_key_test.rb +58 -0
  160. data/test/unit/core/auth/signer_test.rb +30 -0
  161. data/test/unit/core/http/http_error_test.rb +57 -0
  162. data/test/unit/core/http/http_request_test.rb +66 -0
  163. data/test/unit/core/http/http_response_test.rb +45 -0
  164. data/test/unit/service/serialization_test.rb +502 -0
  165. data/test/unit/service/storage_service_test.rb +291 -0
  166. data/test/unit/table/edmtype_test.rb +108 -0
  167. metadata +231 -230
  168. data/Gemfile.lock +0 -36
  169. data/lib/azure/atom.rb +0 -170
  170. data/lib/azure/auth.rb +0 -29
  171. data/lib/azure/blobs.rb +0 -620
  172. data/lib/azure/blobs/blob.rb +0 -360
  173. data/lib/azure/blobs/container.rb +0 -209
  174. data/lib/azure/blobs/service.rb +0 -396
  175. data/lib/azure/blobs/shared_access_signature.rb +0 -84
  176. data/lib/azure/blobs/uri.rb +0 -60
  177. data/lib/azure/configuration.rb +0 -121
  178. data/lib/azure/core/collection.rb +0 -118
  179. data/lib/azure/core/signer.rb +0 -32
  180. data/lib/azure/core/utils/queryable.rb +0 -74
  181. data/lib/azure/core/utils/storage_service_properties.rb +0 -83
  182. data/lib/azure/core/utils/string.rb +0 -59
  183. data/lib/azure/error.rb +0 -72
  184. data/lib/azure/queues.rb +0 -272
  185. data/lib/azure/queues/message.rb +0 -174
  186. data/lib/azure/queues/queue.rb +0 -187
  187. data/lib/azure/queues/service.rb +0 -263
  188. data/lib/azure/queues/service_properties.rb +0 -152
  189. data/lib/azure/queues/uri.rb +0 -78
  190. data/lib/azure/request.rb +0 -102
  191. data/lib/azure/response.rb +0 -93
  192. data/lib/azure/service_bus.rb +0 -4
  193. data/lib/azure/service_bus/auth/authorizer.rb +0 -22
  194. data/lib/azure/service_bus/auth/uri.rb +0 -52
  195. data/lib/azure/service_bus/auth/wrap.rb +0 -37
  196. data/lib/azure/service_bus/auth/wrap_token.rb +0 -45
  197. data/lib/azure/service_bus/auth/wrap_token_manager.rb +0 -46
  198. data/lib/azure/service_bus/queues.rb +0 -194
  199. data/lib/azure/service_bus/queues/queue.rb +0 -100
  200. data/lib/azure/service_bus/queues/queue_serializer.rb +0 -51
  201. data/lib/azure/service_bus/queues/service.rb +0 -154
  202. data/lib/azure/service_bus/queues/uri.rb +0 -80
  203. data/lib/azure/service_bus/rules.rb +0 -110
  204. data/lib/azure/service_bus/rules/rule.rb +0 -97
  205. data/lib/azure/service_bus/rules/service.rb +0 -122
  206. data/lib/azure/service_bus/rules/uri.rb +0 -39
  207. data/lib/azure/service_bus/subscriptions.rb +0 -170
  208. data/lib/azure/service_bus/subscriptions/service.rb +0 -133
  209. data/lib/azure/service_bus/subscriptions/subscription.rb +0 -164
  210. data/lib/azure/service_bus/subscriptions/subscription_serializer.rb +0 -74
  211. data/lib/azure/service_bus/subscriptions/uri.rb +0 -71
  212. data/lib/azure/service_bus/topics.rb +0 -120
  213. data/lib/azure/service_bus/topics/service.rb +0 -98
  214. data/lib/azure/service_bus/topics/topic.rb +0 -122
  215. data/lib/azure/service_bus/topics/topic_serializer.rb +0 -44
  216. data/lib/azure/service_bus/topics/uri.rb +0 -58
  217. data/lib/azure/service_runtime/client/goal_state_pipe_monitor.rb +0 -21
  218. data/lib/azure/service_runtime/client/goal_state_protocol.rb +0 -18
  219. data/lib/azure/service_runtime/client/runtime_client.rb +0 -135
  220. data/lib/azure/service_runtime/deployment.rb +0 -24
  221. data/lib/azure/service_runtime/local_resource.rb +0 -15
  222. data/lib/azure/service_runtime/role.rb +0 -17
  223. data/lib/azure/service_runtime/role_environment.rb +0 -206
  224. data/lib/azure/service_runtime/role_environment_change.rb +0 -32
  225. data/lib/azure/service_runtime/role_instance.rb +0 -35
  226. data/lib/azure/service_runtime/role_instance_endpoint.rb +0 -14
  227. data/lib/azure/tables.rb +0 -215
  228. data/lib/azure/tables/auth/shared_key_lite.rb +0 -30
  229. data/lib/azure/tables/entities_collection.rb +0 -66
  230. data/lib/azure/tables/entity.rb +0 -127
  231. data/lib/azure/tables/service.rb +0 -211
  232. data/lib/azure/tables/table.rb +0 -129
  233. data/lib/azure/tables/tables_collection.rb +0 -62
  234. data/lib/azure/tables/types.rb +0 -65
  235. data/lib/azure/tables/uri.rb +0 -62
  236. data/test/integration/blobs/auth_test.rb +0 -19
  237. data/test/integration/blobs/blob_test.rb +0 -61
  238. data/test/integration/blobs/clear_page_range_test.rb +0 -19
  239. data/test/integration/blobs/copy_test.rb +0 -33
  240. data/test/integration/blobs/create_blobs_test.rb +0 -51
  241. data/test/integration/blobs/create_container_test.rb +0 -13
  242. data/test/integration/blobs/create_snapshot_test.rb +0 -17
  243. data/test/integration/blobs/delete_blob_snapshots_test.rb +0 -19
  244. data/test/integration/blobs/delete_blobs_test.rb +0 -25
  245. data/test/integration/blobs/delete_container_test.rb +0 -24
  246. data/test/integration/blobs/delete_snapshot_test.rb +0 -17
  247. data/test/integration/blobs/get_blob_snapshot_test.rb +0 -18
  248. data/test/integration/blobs/get_blobs_test.rb +0 -31
  249. data/test/integration/blobs/get_page_range_test.rb +0 -19
  250. data/test/integration/blobs/list_blobs_test.rb +0 -39
  251. data/test/integration/blobs/list_containers_test.rb +0 -28
  252. data/test/integration/blobs/manage_blob_leases_test.rb +0 -45
  253. data/test/integration/blobs/manage_blob_metadata_test.rb +0 -51
  254. data/test/integration/blobs/manage_blob_properties_test.rb +0 -25
  255. data/test/integration/blobs/manage_blob_service_properties_test.rb +0 -38
  256. data/test/integration/blobs/manage_container_metadata_test.rb +0 -46
  257. data/test/integration/blobs/manage_container_permissions_test.rb +0 -17
  258. data/test/integration/blobs/update_page_range_test.rb +0 -20
  259. data/test/integration/queues/clear_messages_test.rb +0 -22
  260. data/test/integration/queues/create_queue_test.rb +0 -13
  261. data/test/integration/queues/delete_message_test.rb +0 -42
  262. data/test/integration/queues/delete_queue_test.rb +0 -24
  263. data/test/integration/queues/get_messages_test.rb +0 -39
  264. data/test/integration/queues/list_queues_test.rb +0 -43
  265. data/test/integration/queues/manage_queue_metadata_test.rb +0 -45
  266. data/test/integration/queues/manage_queue_service_properties_test.rb +0 -27
  267. data/test/integration/queues/peek_messages_test.rb +0 -55
  268. data/test/integration/queues/put_message_test.rb +0 -31
  269. data/test/integration/queues/update_message_test.rb +0 -46
  270. data/test/integration/service_bus/auth_test.rb +0 -18
  271. data/test/integration/service_bus/queues/create_queue_test.rb +0 -25
  272. data/test/integration/service_bus/queues/delete_message_from_queue_test.rb +0 -29
  273. data/test/integration/service_bus/queues/delete_queue_test.rb +0 -25
  274. data/test/integration/service_bus/queues/get_queue_test.rb +0 -23
  275. data/test/integration/service_bus/queues/list_queues_test.rb +0 -39
  276. data/test/integration/service_bus/queues/peek_message_from_queue_test.rb +0 -34
  277. data/test/integration/service_bus/queues/read_and_delete_message_from_queue_test.rb +0 -31
  278. data/test/integration/service_bus/queues/send_message_to_queue_test.rb +0 -22
  279. data/test/integration/service_bus/queues/unlock_message_from_queue_test.rb +0 -36
  280. data/test/integration/service_bus/rules/create_rule_test.rb +0 -19
  281. data/test/integration/service_bus/rules/delete_rule_test.rb +0 -17
  282. data/test/integration/service_bus/rules/get_rule_test.rb +0 -21
  283. data/test/integration/service_bus/rules/list_rules_test.rb +0 -24
  284. data/test/integration/service_bus/rules/rule_test.rb +0 -16
  285. data/test/integration/service_bus/subscriptions/create_subscription_test.rb +0 -25
  286. data/test/integration/service_bus/subscriptions/delete_message_from_subscription_test.rb +0 -31
  287. data/test/integration/service_bus/subscriptions/delete_subscription_test.rb +0 -30
  288. data/test/integration/service_bus/subscriptions/fetch_subscription_test.rb +0 -28
  289. data/test/integration/service_bus/subscriptions/list_subscriptions_test.rb +0 -23
  290. data/test/integration/service_bus/subscriptions/peek_lock_message_from_subscription_test.rb +0 -42
  291. data/test/integration/service_bus/subscriptions/read_delete_message_from_subscription_test.rb +0 -36
  292. data/test/integration/service_bus/subscriptions/subscription_test.rb +0 -31
  293. data/test/integration/service_bus/subscriptions/unlock_message_from_subscription_test.rb +0 -43
  294. data/test/integration/service_bus/topics/create_topic_test.rb +0 -25
  295. data/test/integration/service_bus/topics/delete_topic_test.rb +0 -25
  296. data/test/integration/service_bus/topics/get_topic_test.rb +0 -23
  297. data/test/integration/service_bus/topics/list_topics_test.rb +0 -39
  298. data/test/integration/service_bus/topics/send_message_to_topic_test.rb +0 -23
  299. data/test/integration/tables/auth_test.rb +0 -29
  300. data/test/integration/tables/creating_tables_test.rb +0 -16
  301. data/test/integration/tables/delete_entity_test.rb +0 -39
  302. data/test/integration/tables/deleting_table_test.rb +0 -22
  303. data/test/integration/tables/insert_entity_test.rb +0 -23
  304. data/test/integration/tables/merge_entity_test.rb +0 -28
  305. data/test/integration/tables/query_entities_test.rb +0 -131
  306. data/test/integration/tables/query_tables_test.rb +0 -63
  307. data/test/integration/tables/update_entity_test.rb +0 -54
  308. data/test/support/blobs.rb +0 -12
  309. data/test/support/table_names.rb +0 -44
  310. data/test/unit/atom_test.rb +0 -58
  311. data/test/unit/auth_test.rb +0 -24
  312. data/test/unit/blobs/blob_test.rb +0 -5
  313. data/test/unit/blobs/container_test.rb +0 -67
  314. data/test/unit/blobs/service_test.rb +0 -17
  315. data/test/unit/blobs/shared_access_signature_test.rb +0 -66
  316. data/test/unit/blobs_test.rb +0 -156
  317. data/test/unit/core/service_test.rb +0 -57
  318. data/test/unit/core/utils/interval_test.rb +0 -70
  319. data/test/unit/core/utils/queryable_test.rb +0 -69
  320. data/test/unit/core/utils/storage_service_properties_test.rb +0 -66
  321. data/test/unit/error_test.rb +0 -39
  322. data/test/unit/queues/message_test.rb +0 -40
  323. data/test/unit/queues/queue_test.rb +0 -64
  324. data/test/unit/queues/service_properties.rb +0 -35
  325. data/test/unit/request_test.rb +0 -38
  326. data/test/unit/response_test.rb +0 -43
  327. data/test/unit/service_bus/auth/authorizer_test.rb +0 -27
  328. data/test/unit/service_bus/auth/wrap_token_test.rb +0 -28
  329. data/test/unit/service_bus/queues/queue_test.rb +0 -38
  330. data/test/unit/service_bus/topics/topic_test.rb +0 -33
  331. data/test/unit/service_runtime/data/goalstate.xml +0 -9
  332. data/test/unit/service_runtime/data/roleenvironmentdata.xml +0 -29
  333. data/test/unit/service_runtime/data/runtime.xml +0 -6
  334. data/test/unit/service_runtime/role_environment_test.rb +0 -144
  335. data/test/unit/tables/auth/shared_key_lite_test.rb +0 -39
  336. data/test/unit/tables/auth/shared_key_test.rb +0 -45
  337. data/test/unit/tables/entities_collection_test.rb +0 -39
  338. data/test/unit/tables/entity_test.rb +0 -72
  339. data/test/unit/tables/table_test.rb +0 -57
  340. data/test/unit/tables_test.rb +0 -302
  341. data/test/unit/types_test.rb +0 -67
@@ -1,59 +0,0 @@
1
- module Azure
2
- module Core
3
- module Utils
4
- # Convenience module to build query strings.
5
- module String
6
- # The following methods have been borrowed (stolen?) from ActiveSupport
7
-
8
- # By default, +camelize+ converts strings to UpperCamelCase. If the argument to +camelize+
9
- # is set to <tt>:lower</tt> then +camelize+ produces lowerCamelCase.
10
- #
11
- # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
12
- #
13
- # Examples:
14
- # "active_model".camelize # => "ActiveModel"
15
- # "active_model".camelize(:lower) # => "activeModel"
16
- # "active_model/errors".camelize # => "ActiveModel::Errors"
17
- # "active_model/errors".camelize(:lower) # => "activeModel::Errors"
18
- #
19
- # As a rule of thumb you can think of +camelize+ as the inverse of +underscore+,
20
- # though there are cases where that does not hold:
21
- #
22
- # "SSLError".underscore.camelize # => "SslError"
23
- def camelize(term, uppercase_first_letter = true)
24
- string = term.to_s
25
- acronyms = {}
26
- if uppercase_first_letter
27
- string = string.sub(/^[a-z\d]*/) { acronyms[$&] || $&.capitalize }
28
- else
29
- string = string.sub(/^(?:(?=a)b(?=\b|[A-Z_])|\w)/) { $&.downcase }
30
- end
31
- string.gsub(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{acronyms[$2] || $2.capitalize}" }.gsub('/', '::')
32
- end
33
-
34
- # Makes an underscored, lowercase form from the expression in the string.
35
- #
36
- # Changes '::' to '/' to convert namespaces to paths.
37
- #
38
- # Examples:
39
- # "ActiveModel".underscore # => "active_model"
40
- # "ActiveModel::Errors".underscore # => "active_model/errors"
41
- #
42
- # As a rule of thumb you can think of +underscore+ as the inverse of +camelize+,
43
- # though there are cases where that does not hold:
44
- #
45
- # "SSLError".underscore.camelize # => "SslError"
46
- def underscore(camel_cased_word)
47
- word = camel_cased_word.to_s.dup
48
- word.gsub!(/::/, '/')
49
- word.gsub!(/(?:([A-Za-z\d])|^)((?=a)b)(?=\b|[^a-z])/) { "#{$1}#{$1 && '_'}#{$2.downcase}" }
50
- word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
51
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
52
- word.tr!("-", "_")
53
- word.downcase!
54
- word
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,72 +0,0 @@
1
- require "xml"
2
-
3
- module Azure
4
- # Public: Superclass for errors generated from this library, so people can
5
- # just rescue this for generic error handling.
6
- class Error < StandardError; end
7
-
8
- # Public: FileUploadError
9
- class FileUploadError < ::Azure::Error; end
10
-
11
- # Public: Class for handling all HTTP response errors.
12
- class HTTPError < ::Azure::Error
13
- # Public: The HTTP status code of this error.
14
- #
15
- # Returns a Fixnum.
16
- attr :code
17
-
18
- # Public: The type of error, as described by the Azure documentation.
19
- #
20
- # Returns a String.
21
- attr :type
22
-
23
- # Public: The English description of this error.
24
- #
25
- # Returns a String.
26
- attr :description
27
-
28
- # Public: Initialize an error.
29
- #
30
- # http_response - An Azure::Response.
31
- def initialize(http_response)
32
- @http_response = http_response
33
- @code = http_response.code
34
- parse_response
35
- super("#{type} (#{code}): #{description}")
36
- end
37
-
38
- # Extract the relevant information from the response's body. If the response
39
- # body is not an XML, we return an 'Unknown' error with the entire body as
40
- # the description.
41
- #
42
- # Returns nothing.
43
- def parse_response
44
- if @http_response.body.include?("<")
45
- document = XML::Parser.string(@http_response.body).parse
46
-
47
- # FIXME: For some reason document.find_first("code") (or "//code", etc.)
48
- # and document.find_first("message") return nil, while this works. It
49
- # makes no sense that this works and that doesn't. Oh well.
50
- document.root.children.each do |child|
51
- @type = child.content if child.name == "code"
52
- @description = child.content if child.name == "message"
53
- end
54
- else
55
- @type = "Unknown"
56
- @description = @http_response.body.strip
57
- end
58
- end
59
- end
60
-
61
- # Public: Mixin that gives a few convenience methods for handling errors in
62
- # domain objects.
63
- module ErrorHandler
64
- # Public: Get/Set the current error in this object.
65
- attr_accessor :error
66
-
67
- # Public: Check if this object doesn't have any errors.
68
- def valid?
69
- error.nil?
70
- end
71
- end
72
- end
@@ -1,272 +0,0 @@
1
- require "nokogiri"
2
- require "azure/queues/service"
3
- require "azure/queues/queue"
4
- require "azure/queues/message"
5
- require "azure/queues/service_properties"
6
- require "azure/queues/uri"
7
-
8
- module Azure
9
- module Queues
10
- # Public: This operation gets the properties of a storage account’s Queue Service.
11
- # If the operation is unsuccessful the resulting object will have the error
12
- # accessible through the #error method.
13
- #
14
- # options - Options for this query (default: {}):
15
- # :timeout - (optional) timeout for the request in seconds
16
- # service - The backend service to implement this (optional).
17
- #
18
- # Returns an Azure::Queues::ServiceProperties object
19
- def self.get_service_properties(options = {}, service=Azure::Queues::Services::GetServiceProperties.new)
20
- response = service.call(options)
21
-
22
- if response.success?
23
- result = Nokogiri::XML(response.body)
24
- node = result.xpath('//StorageServiceProperties').first
25
- ServiceProperties.from_node(node)
26
- else
27
- ServiceProperties.from_error(response.error)
28
- end
29
- end
30
-
31
- # Public: This operation sets the properties of a storage account’s Queue Service.
32
- # If the operation is unsuccessful the resulting object will have the error
33
- # accessible through the #error method.
34
- #
35
- # properties - an Azure::Queues::ServiceProperties object
36
- # options - Options for this query (default: {}):
37
- # :timeout - (optional) timeout for the request in seconds
38
- # service - The backend service to implement this (optional).
39
- #
40
- # Returns an Azure::Queues::ServiceProperties object
41
- def self.set_service_properties(properties, options = {}, service=Azure::Queues::Services::SetServiceProperties.new)
42
- response = service.call(properties, options)
43
- properties.error = response.error unless response.success?
44
- response.success?
45
- end
46
-
47
- # Public: This operation lists all of the queues in a given storage account.
48
- # GET http://myaccount.queue.core.windows.net?comp=list
49
- #
50
- # options - Options for this query (default: {}):
51
- # :prefix - Filters the results to return only queues with names that begin with the specified prefix.
52
- # :marker - A string value that identifies the portion of the list to be returned with the next list operation.
53
- # :maxresults - Specifies the maximum number of queues to return
54
- # :include_metadata - Include this parameter to specify that the container's metadata be returned as part of the response body.
55
- # service - The backend service to implement this (optional).
56
- #
57
- # Returns an Array of Query elements.
58
- def self.all(options = {}, service=Azure::Queues::Services::ListQueues.new)
59
- response = service.call(options)
60
-
61
- if response.success?
62
- result = Nokogiri::XML(response.body)
63
- result.xpath('//Queues/Queue').map {|node| Queue.from_node(node) }
64
- else
65
- []
66
- end
67
- end
68
-
69
- # Public: Try to create a new queue. If the operation is unsuccessful,
70
- # the resulting Queue object will have the error accessible through the
71
- # #error method.
72
- #
73
- # name - The name of the container.
74
- # metadata - User defined metadata for this container (optional).
75
- # service - The backend service to implement this (optional).
76
- #
77
- # Returns a Queue.
78
- def self.create(name, metadata={}, service=Azure::Queues::Services::CreateQueue.new)
79
- response = service.call(name, metadata)
80
-
81
- if response.success?
82
- Queue.new(name)
83
- else
84
- Queue.from_error(response.error)
85
- end
86
- end
87
-
88
- # Public: Delete a Queue from the server. If the delete operation fails,
89
- # the queue is invalidated. Otherwise it's frozen.
90
- #
91
- # queue - An Azure::Queues::Queue.
92
- # service - The backend service to implement this (optional).
93
- #
94
- # Returns true|false to indicate success.
95
- def self.delete(queue, service=Azure::Queues::Services::DeleteQueue.new)
96
- response = service.call(queue.name)
97
-
98
- if response.success?
99
- queue.freeze
100
- else
101
- queue.error = response.error
102
- end
103
-
104
- response.success?
105
- end
106
-
107
- # Public: Obtain the queue metadata. This updates the queue and
108
- # changes the metadata internally if successful. If the operation fails, the
109
- # queue's metadata does not change, and the queue is invalidated.
110
- #
111
- # queue - An Azure::Queues::Queue.
112
- # service - The backend service to implement this (optional).
113
- #
114
- # Returns a Hash.
115
- def self.load_metadata(queue, service=Azure::Queues::Services::GetMetadata.new)
116
- response = service.call(queue.name)
117
-
118
- if response.success?
119
- queue.extract_metadata(response.headers)
120
- else
121
- queue.error = response.error
122
- {}
123
- end
124
- end
125
-
126
- # Public: Save the current metadata of a queue in the storage service.
127
- # If the operation fails, the queue is invalidated.
128
- #
129
- # queue - An Azure::Queues::Queue.
130
- # service - The backend service to implement this (optional).
131
- #
132
- # Returns true|false to indicate success.
133
- def self.save_metadata(queue, service=Azure::Queues::Services::SetMetadata.new)
134
- response = service.call(queue.name, queue.metadata)
135
- queue.error = response.error unless response.success?
136
- response.success?
137
- end
138
-
139
- ## MESSAGES
140
-
141
- # Public: Try to add a new message to the back of the message queue. If the
142
- # operation is unsuccessful, the message is invalidated.
143
- #
144
- # queue - An Azure::Queues::Queue.
145
- # message - An Azure::Queues::Message.
146
- # options - A Hash of options for this operation.
147
- # :visibilitytimeout - Time in seconds until the message becomes
148
- # visible in the queue (default: 0).
149
- # :messagettl - Time-to-live interval for the message in
150
- # seconds. Can go up to 7 days (the
151
- # default).
152
- # service - The backend service to implement this (optional).
153
- #
154
- # Returns the message.
155
- def self.put_message(queue, message, options = {}, service=Azure::Queues::Services::PutMessage.new)
156
- response = service.call(queue.name, message.text, options)
157
-
158
- if response.success?
159
- message.queue = queue
160
- else
161
- message.error = response.error
162
- end
163
-
164
- message
165
- end
166
-
167
- # Public: Get one or more messages from the front of the queue.
168
- #
169
- # FIXME: Handle errors.
170
- #
171
- # queue - An Azure::Queues::Queue.
172
- # options - A Hash of options for this operation (optional):
173
- # :visibilitytimeout - Update the returned messages'
174
- # visibilitytimeout to this number (at least
175
- # 1, the default).
176
- # :numofmessages - A number between 1 and 32 of messages to
177
- # return (default: 1).
178
- # service - The backend service to implement this (optional).
179
- #
180
- # Returns an Array of Messages.
181
- def self.get_messages(queue, options = {}, service = Azure::Queues::Services::GetMessages.new)
182
- response = service.call(queue.name, options)
183
-
184
- # FIXME: need error handling
185
- document = Nokogiri::XML(response.body)
186
- (document / "//QueueMessagesList/QueueMessage").map do |node|
187
- Message.from_node(node) { |m| m.queue = queue }
188
- end
189
- end
190
-
191
- # Public: Peek at one or more messages from the front of the queue.
192
- #
193
- # queue - The message queue
194
- # options - A Hash of options for this operation (optional):
195
- # :numofmessages - A number between 1 and 32 of messages to return
196
- # (default: 1).
197
- # service - The backend service to implement this (optional).
198
- #
199
- # Returns an Array of Messages.
200
- def self.peek_messages(queue, options = {}, service = Azure::Queues::Services::PeekMessages.new)
201
- response = service.call(queue.name, options)
202
-
203
- # FIXME: need error handling
204
- document = Nokogiri::XML(response.body)
205
- (document / "//QueueMessagesList/QueueMessage").map do |node|
206
- Message.from_node(node) { |m| m.queue = queue }
207
- end
208
- end
209
-
210
- # Public: Delete the specified message from the queue. If the operation
211
- # fails, the message is invalidated.
212
- #
213
- # message - An Azure::Queues::Message.
214
- # service - The backend service to implement this (optional).
215
- #
216
- # Returns true|false to indicate success.
217
- def self.delete_message(message, service = Azure::Queues::Services::DeleteMessage.new)
218
- response = service.call(
219
- message.queue.name,
220
- message.id,
221
- message.pop_receipt
222
- )
223
-
224
- if response.success?
225
- message.freeze
226
- else
227
- message.error = response.error
228
- end
229
-
230
- response.success?
231
- end
232
-
233
- # Public: Delete all messages from the queue. If the operation fails, the
234
- # queue is invalidated.
235
- #
236
- # queue - The message queue.
237
- # service - The backend service to implement this (optional).
238
- #
239
- # Returns true|false to indicate success.
240
- def self.clear_messages(queue, service = Azure::Queues::Services::ClearMessages.new)
241
- response = service.call(queue.name)
242
- queue.error = response.error unless response.success?
243
- response.success?
244
- end
245
-
246
- # Public: Update the specified message. If the operation fails, the message
247
- # is invalidated.
248
- #
249
- # message - An Azure::Queues::Message.
250
- # service - The backend service to implement this (optional).
251
- #
252
- # Returns true|false to indicate success.
253
- def self.update_message(message, service=Azure::Queues::Services::UpdateMessage.new)
254
- response = service.call(
255
- message.queue.name,
256
- message.id,
257
- message.text,
258
- message.visibility_timeout,
259
- message.pop_receipt
260
- )
261
-
262
- if response.success?
263
- message.time_next_visible = response.headers['x-ms-time-next-visible']
264
- message.pop_receipt = response.headers['x-ms-popreceipt']
265
- else
266
- message.error = response.error
267
- end
268
-
269
- response.success?
270
- end
271
- end
272
- end
@@ -1,174 +0,0 @@
1
- require "azure/queues"
2
- require "azure/queues/uri"
3
- require "azure/error"
4
- require "uri"
5
- require "time"
6
-
7
- module Azure
8
- module Queues
9
- # Public: Representation of a Message in a message queue.
10
- class Message
11
- include Azure::ErrorHandler
12
-
13
- # The message queue for this message
14
- #
15
- # Returns a Azure::Queues::Queue object
16
- attr_accessor :queue
17
-
18
- # MessageId
19
- # GUID value that identifies the message in the queue
20
- #
21
- # returns a String
22
- attr_accessor :id
23
-
24
- # InsertionTime
25
- # UTC value formatted as described in RFC 1123
26
- #
27
- # Returns a String
28
- attr_accessor :insertion_time
29
-
30
- # ExpirationTime
31
- # UTC value formatted as described in RFC 1123
32
- #
33
- # Returns a String
34
- attr_accessor :expiration_time
35
-
36
- # TimeNextVisible
37
- # UTC value formatted as described in RFC 1123
38
- #
39
- # Returns a String
40
- attr_accessor :time_next_visible
41
-
42
- # PopReceipt
43
- #
44
- # Returns a String
45
- attr_accessor :pop_receipt
46
-
47
- # DequeueCount
48
- # Has a value of 1 the first time the message is dequeued. This value is incremented each time the message is subsequently dequeued.
49
- #
50
- # Returns an Integer
51
- attr_accessor :dequeue_count
52
-
53
- # MessageText
54
- #
55
- # Returns a String
56
- attr_accessor :text
57
-
58
- # Amount of time in seconds the message remains invisible for GET
59
- # operations.
60
- #
61
- # Returns an Integer.
62
- attr_accessor :visibility_timeout
63
-
64
- # Amount of seconds until this message expires.
65
- #
66
- # Returns an Integer.
67
- attr_accessor :ttl
68
-
69
- # Public: Instantiate a message from an XML entry.
70
- #
71
- # entry - An XML::Node element.
72
- #
73
- # Returns a Message.
74
- def self.from_node(node)
75
- pop_receipt = (node % "PopReceipt")
76
- time_next_visible = (node % "TimeNextVisible")
77
- text = (node % "MessageText").text
78
-
79
- new(text) do |m|
80
- m.id = (node % "MessageId").text
81
- m.insertion_time = Time.parse((node % "InsertionTime").text)
82
- m.expiration_time = Time.parse((node % "ExpirationTime").text)
83
- m.dequeue_count = (node % "DequeueCount").text.to_i
84
- m.pop_receipt = pop_receipt && pop_receipt.text
85
- m.time_next_visible = time_next_visible && Time.parse(time_next_visible.text)
86
- yield m if block_given?
87
- end
88
- end
89
-
90
- # Public: Instantiate a message from an error object.
91
- #
92
- # error - An Azure::Error.
93
- #
94
- # Returns a Message.
95
- def self.from_error(error)
96
- message = new(nil)
97
- message.error = error
98
- message
99
- end
100
-
101
- # Public: Attempt to convert an object into a Message. If the object can't
102
- # be converted, we return nil.
103
- #
104
- # object - An object that might be converted into a Message.
105
- #
106
- # Returns a Message or nil.
107
- def self.try_convert(object)
108
- if object.respond_to?(:to_message)
109
- object.to_message
110
- elsif object.respond_to?(:to_str)
111
- new(object.to_str)
112
- end
113
- end
114
-
115
- # Public: Initialize the message.
116
- #
117
- # text - The message text
118
- # service - The Queue service to perform external calls.
119
- def initialize(text, service=Azure::Queues)
120
- @text = text
121
- @visibility_timeout = 0
122
- @ttl = 7 * 24 * 3600 # one week
123
- @service = service
124
- yield self if block_given?
125
- end
126
-
127
- # Public: Compare two messages to see if they are the same.
128
- #
129
- # other - A Message.
130
- #
131
- # Returns true|false.
132
- def ==(other)
133
- id == other.id
134
- end
135
-
136
- # Public: Deletes this message from the message queue.
137
- #
138
- # Returns true|false to indicate success.
139
- def delete
140
- @service.delete_message(self)
141
- end
142
-
143
- # Public: Updates this message with a new visibility timeout and new text
144
- # if modified.
145
- #
146
- # Returns true|false to indicate success.
147
- def update!
148
- @service.update_message(self)
149
- end
150
-
151
- # Public: Turn this object into an Azure::Queues::Message. This is here
152
- # just so we can use Message.try_convert and Message().
153
- #
154
- # Returns self.
155
- def to_message
156
- self
157
- end
158
- end
159
-
160
- module ::Kernel
161
- # Attempt to convert an object into a Message, or fail if the conversion
162
- # can't be done.
163
- #
164
- # object - An object that might be converted into a message.
165
- #
166
- # Returns a Message.
167
- # Raises ArgumentError if the object can't be converted into a Message.
168
- def Message(object)
169
- Message.try_convert(object) ||
170
- raise(ArgumentError, "invalid value for Message(): #{object.inspect}")
171
- end
172
- end
173
- end
174
- end