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,30 +1,45 @@
1
- require "azure/core/utils/string"
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require "rubygems"
2
16
  require "json"
3
17
  require "time"
4
18
  require "uri"
5
19
 
20
+ require "azure/service_bus/brokered_message"
21
+
6
22
  module Azure
7
23
  module ServiceBus
8
24
  class BrokeredMessageSerializer
9
- include Azure::Core::Utils::String
10
25
 
11
- PROPERTIES = [
12
- 'ContentType',
13
- 'CorrelationId',
14
- 'SessionID',
15
- 'DeliveryCount',
16
- 'LockedUntilUtc',
17
- 'LockToken',
18
- 'MessageId',
19
- 'Label',
20
- 'ReplyTo',
21
- 'EnqueuedTimeUtc',
22
- 'SequenceNumber',
23
- 'TimeToLive',
24
- 'To',
25
- 'ScheduledEnqueueTimeUtc',
26
- 'ReplyToSessionId'
27
- ].freeze
26
+ PROPERTIES = {
27
+ 'ContentType' => 'content_type',
28
+ 'CorrelationId' => 'correlation_id',
29
+ 'SessionID' => 'session_id',
30
+ 'DeliveryCount' => 'delivery_count',
31
+ 'LockedUntilUtc' => 'locked_until_utc',
32
+ 'LockToken' => 'lock_token',
33
+ 'MessageId' => 'message_id',
34
+ 'Label' => 'label',
35
+ 'ReplyTo' => 'reply_to',
36
+ 'EnqueuedTimeUtc' => 'enqueued_time_utc',
37
+ 'SequenceNumber' => 'sequence_number',
38
+ 'TimeToLive' => 'time_to_live',
39
+ 'To' => 'to',
40
+ 'ScheduledEnqueueTimeUtc' => 'scheduled_enqueue_time_utc',
41
+ 'ReplyToSessionId' => 'reply_to_session_id'
42
+ }.freeze
28
43
 
29
44
  attr :message
30
45
 
@@ -67,11 +82,13 @@ module Azure
67
82
  'location',
68
83
  'server',
69
84
  'connection',
70
- 'content-type'
85
+ 'content-type',
86
+ 'content-length'
71
87
  ]
72
88
  props = response.headers.reject {|k,_| header_names_black_list.include?(k.downcase) }
73
89
  props.each do |prop_name, value|
74
- m.properties[prop_name] = value.gsub(/"/, '')
90
+ parsed = JSON.parse("{ \"" + prop_name + "\" : " + value + "}")
91
+ m.properties[prop_name] = parsed[prop_name]
75
92
  end
76
93
  end
77
94
  end
@@ -81,33 +98,30 @@ module Azure
81
98
  # Returns a JSON String
82
99
  def to_json
83
100
  hash = {}
84
- PROPERTIES.each do |p|
85
- attr_name = underscore(p)
101
+ PROPERTIES.each do |p, u|
102
+ attr_name = u
86
103
  value = @message.send(attr_name)
87
104
  hash[p] = value unless value.nil?
88
105
  end
89
106
  hash.to_json
90
107
  end
91
108
 
92
- # Build a hash based on message properties and make it
93
- # compliant with Azure policy for Message Property values
94
- # in HTTP headers
109
+ # Build a hash based on message properties and ensure
110
+ # the values are in a valid format for HTTP headers
95
111
  #
96
112
  # Returns a Hash
97
113
  def get_property_headers
98
114
  hash = {}
99
115
  @message.properties.each do |name, value|
100
- val = value
101
- # Check for an RFC2626 Date
102
- begin
103
- val = '"' + Time.parse(value).httpdate + '"'
104
- rescue ArgumentError
105
- val = '"' + value + '"' if value.is_a? String
116
+ if value != nil && value.class == Time
117
+ value = value.httpdate
106
118
  end
107
- hash[name] = val
119
+
120
+ tmp = JSON.generate [ value ]
121
+ hash[name] = tmp[1..(tmp.length-2)]
108
122
  end
109
123
  hash
110
124
  end
111
125
  end
112
126
  end
113
- end
127
+ end
@@ -0,0 +1,45 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/service_bus/filter'
16
+
17
+ module Azure
18
+ module ServiceBus
19
+ class CorrelationFilter < Filter
20
+ # Public: Initialize the Correlation Id Filter.
21
+ #
22
+ # ==== Attributes
23
+ #
24
+ # * +hash+ - The resource options Hash
25
+ #
26
+ # ==== Options
27
+ #
28
+ # Accepted key/value pairs in options parameter are:
29
+ # * +:correlation_id+ - The correlation identifier.
30
+ #
31
+ def initialize(hash=nil)
32
+ hash = {} unless hash
33
+ @correlation_id = hash[:correlation_id]
34
+ super()
35
+ end
36
+
37
+ attr_accessor :correlation_id #CorrelationId
38
+
39
+ def to_hash(hash={})
40
+ hash[:correlation_id]=correlation_id if correlation_id
41
+ super(hash)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,30 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/service_bus/action'
16
+
17
+ module Azure
18
+ module ServiceBus
19
+ class EmptyRuleAction < Action
20
+ # Public: Initialize the empty rule action.
21
+ #
22
+ # ==== Attributes
23
+ #
24
+ # * +hash+ - The resource options Hash
25
+ def initialize(hash=nil)
26
+ super()
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,38 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/service_bus/sql_filter'
16
+
17
+ module Azure
18
+ module ServiceBus
19
+ class FalseFilter < SqlFilter
20
+ # Public: Initialize the SQL false Filter.
21
+ #
22
+ # ==== Attributes
23
+ #
24
+ # * +hash+ - The resource options Hash
25
+ #
26
+ # ==== Options
27
+ #
28
+ # Accepted key/value pairs in options parameter are:
29
+ # * +:sql_expression+ - The SQL expression.
30
+ #
31
+ def initialize(hash=nil)
32
+ hash = {} unless hash
33
+ hash[:sql_expression] = "1 = 0" unless hash[:sql_expression]
34
+ super(hash)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,21 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/service_bus/rule_aspect'
16
+
17
+ module Azure
18
+ module ServiceBus
19
+ class Filter < RuleAspect; end
20
+ end
21
+ end
@@ -1,11 +1,24 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
1
15
  require "delegate"
2
16
 
3
17
  module Azure
4
- module Core
5
- module Utils
18
+ module ServiceBus
6
19
  # Public: Helper class to decorate a numeric duration so it can be output
7
- # as an ISO8601-compliant Duration. (This class only implements a subset
8
- # of the ISO8601 standard, since it's what Microsoft appears to be using.)
20
+ # as an ISO8601-compliant Duration. (This class only implements the subset
21
+ # of the ISO8601 standard that the Azure REST API uses.)
9
22
  #
10
23
  # Examples
11
24
  #
@@ -41,23 +54,18 @@ module Azure
41
54
  #
42
55
  # Returns an Interval.
43
56
  def self.parse(string)
44
- re = /
45
- P (?<d>[\d]+D)? # match days
46
- (?:
47
- T (?<h>[\d]+H)? # match hours
48
- (?<m>[\d]+M)? # match minutes
49
- (?<s>[\d\.]+S)? # match seconds
50
- )?
51
- /x
57
+ re = /P([\d\.\,]+Y)?([\d\.\,]+M)?([\d\.\,]+D)?(?:T([\d\.\,]+H)?([\d\.\,]+M)?([\d\.\,]+S)?)?/
52
58
 
53
59
  match = re.match(string)
54
60
 
55
61
  return nil if match.nil?
56
62
 
57
- days = match[:d].to_i
58
- hours = match[:h].to_i
59
- minutes = match[:m].to_i
60
- seconds = match[:s].to_f
63
+ #years = match[1].to_f
64
+ #months = match[2].to_f
65
+ days = match[3].to_f
66
+ hours = match[4].to_f
67
+ minutes = match[5].to_f
68
+ seconds = match[6].to_f
61
69
 
62
70
  new(seconds + minutes * 60 + hours * 3600 + days * 86400)
63
71
  end
@@ -72,13 +80,13 @@ module Azure
72
80
  seconds = (self % 60)
73
81
 
74
82
  days = "%<d>s" % {
75
- d: days.zero? ? nil : "#{days}D"
83
+ :d => days.zero? ? nil : "#{days}D"
76
84
  }
77
85
 
78
86
  time = "%<h>s%<m>s%<s>s" % {
79
- h: hours.zero? ? nil : "#{hours}H",
80
- m: minutes.zero? ? nil : "#{minutes}M",
81
- s: nonzero? && seconds.zero? ? nil : "#{seconds}S"
87
+ :h => hours.zero? ? nil : "#{hours}H",
88
+ :m => minutes.zero? ? nil : "#{minutes}M",
89
+ :s => nonzero? && seconds.zero? ? nil : "#{seconds}S"
82
90
  }
83
91
 
84
92
  "P#{days}" + (time.empty? ? "" : "T#{time}")
@@ -91,7 +99,6 @@ module Azure
91
99
  def to_interval
92
100
  self
93
101
  end
94
- end
95
102
  end
96
103
  end
97
- end
104
+ end
@@ -0,0 +1,230 @@
1
+ #-------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #--------------------------------------------------------------------------
15
+ require 'azure/service_bus/resource'
16
+
17
+ module Azure
18
+ module ServiceBus
19
+ class Queue < Resource
20
+ # Public: Initialize the queue.
21
+ #
22
+ # ==== Attributes
23
+ #
24
+ # * +name+ - A String with the name of the queue.
25
+ # * +options+ - The resource options Hash
26
+ #
27
+ # ==== Options
28
+ #
29
+ # Accepted key/value pairs in options parameter are:
30
+ # * +:default_message_time_to_live+ - XML datetime. Determines how long a message lives in the associated subscriptions.
31
+ # * +:duplicate_detection_history_time_window+ - XML datetime. Specifies the time span during which the Service Bus will detect message duplication.
32
+ # * +:enable_batched_operations+ - Boolean. Enables or disables service side batching behavior when performing operations for the specific queue.
33
+ # * +:dead_lettering_on_message_expiration:+ - Boolean. This field controls how the Service Bus handles a message whose TTL has expired.
34
+ # * +:lock_duration+ - XML datetime. Determines the amount of time in seconds in which a message should be locked for processing by a receiver.
35
+ # * +:max_delivery_count+ - Number. A message is automatically deadlettered after this number of deliveries.
36
+ # * +:max_size_in_megabytes+ - Number. Specifies the maximum topic size in megabytes
37
+ # * +:message_count+ - Number. Displays the number of messages currently in the queue.
38
+ # * +:requires_duplicate_detection+ - Boolean. If enabled, the topic will detect duplicate messages within the time span specified by the DuplicateDetectionHistoryTimeWindow property
39
+ # * +:requires_session+ - Boolean. If set to true, the queue will be session-aware and only SessionReceiver will be supported.
40
+ # * +:size_in_bytes+ - Number. Reflects the actual bytes toward the topic quota that messages in the topic currently occupy.
41
+ #
42
+ def initialize(name, options = {})
43
+ normalized_options = {}
44
+ normalized_options["DefaultMessageTimeToLive"] = options[:default_message_time_to_live].to_s if options.has_key?(:default_message_time_to_live)
45
+ normalized_options["DuplicateDetectionHistoryTimeWindow"] = options[:duplicate_detection_history_time_window].to_s if options.has_key?(:duplicate_detection_history_time_window)
46
+ normalized_options["EnableBatchedOperations"] = options[:enable_batched_operations].to_s if options.has_key?(:enable_batched_operations)
47
+ normalized_options["DeadLetteringOnMessageExpiration"] = options[:dead_lettering_on_message_expiration].to_s if options.has_key?(:dead_lettering_on_message_expiration)
48
+ normalized_options["LockDuration"] = options[:lock_duration].to_s if options.has_key?(:lock_duration)
49
+ normalized_options["MaxDeliveryCount"] = options[:max_delivery_count].to_s if options.has_key?(:max_delivery_count)
50
+ normalized_options["MaxSizeInMegabytes"] = options[:max_size_in_megabytes].to_s if options.has_key?(:max_size_in_megabytes)
51
+ normalized_options["MessageCount"] = options[:message_count].to_s if options.has_key?(:message_count)
52
+ normalized_options["RequiresDuplicateDetection"] = options[:requires_duplicate_detection].to_s if options.has_key?(:requires_duplicate_detection)
53
+ normalized_options["RequiresSession"] = options[:requires_session].to_s if options.has_key?(:requires_session)
54
+ normalized_options["SizeInBytes"] = options[:size_in_bytes].to_s if options.has_key?(:size_in_bytes)
55
+
56
+ super(name, normalized_options)
57
+ end
58
+
59
+ # MessageCount: Number
60
+ #
61
+ # Displays the number of messages currently in the queue.
62
+ def message_count
63
+ to_i description['MessageCount']
64
+ end
65
+
66
+ def message_count=(val)
67
+ _set 'MessageCount', val
68
+ end
69
+
70
+ # LockDuration: XML datetime
71
+ #
72
+ # Determines the amount of time in seconds in which a message should be locked for processing by a receiver.
73
+ # After this period, the message is unlocked and available for consumption by the next receiver. Settable
74
+ # only at queue creation time:
75
+ #
76
+ # Range: 0 - 5 minutes. 0 means that the message is not locked
77
+ # Default: 30 seconds
78
+ def lock_duration
79
+ to_interval description['LockDuration']
80
+ end
81
+
82
+ def lock_duration=(val)
83
+ _set 'LockDuration', val
84
+ end
85
+
86
+ # RequiresSession: True, False
87
+ #
88
+ # Settable only at queue creation time. If set to true, the queue will be session-aware and only SessionReceiver
89
+ # will be supported. Session-aware queues are not supported through REST.
90
+ #
91
+ # Default for durable queue: false
92
+ def requires_session
93
+ to_bool description['RequiresSession']
94
+ end
95
+
96
+ def requires_session=(val)
97
+ _set 'RequiresSession', val
98
+ end
99
+
100
+ # DeadLetteringOnMessageExpiration: True, False
101
+ #
102
+ # This field controls how the Service Bus handles a message whose TTL has expired. If it is enabled and a message
103
+ # expires, the Service Bus moves the message from the queue into the queue's dead-letter sub-queue. If disabled,
104
+ # message will be permanently deleted from the queue. Settable only at queue creation time.
105
+ #
106
+ # Default: false
107
+ def dead_lettering_on_message_expiration
108
+ to_bool description['DeadLetteringOnMessageExpiration']
109
+ end
110
+
111
+ def enable_dead_lettering_on_message_expiration=(val)
112
+ _set 'DeadLetteringOnMessageExpiration', val
113
+ end
114
+
115
+ # MaxDeliveryCount: Number
116
+ #
117
+ # A message is automatically deadlettered after this number of deliveries.
118
+ def max_delivery_count
119
+ to_i description['MaxDeliveryCount']
120
+ end
121
+
122
+ def max_delivery_count=(val)
123
+ _set 'MaxDeliveryCount', val
124
+ end
125
+
126
+ # MaxSizeInMegaBytes: Number
127
+ #
128
+ # Specifies the maximum queue size in megabytes. Any attempt to enqueue a message that will cause the queue to
129
+ # exceed this value will fail. You can only set this parameter at queue creation time using the following values:
130
+ #
131
+ # Range: 1 - 1024 (valid values are 1024, 2048, 3072, 4096, 5120)
132
+ # Default: 1*1024 (valid values are 1024, 2048, 3072, 4096, 5120)
133
+ def max_size_in_megabytes
134
+ to_i description['MaxSizeInMegabytes']
135
+ end
136
+
137
+ def max_size_in_megabytes=(val)
138
+ _set 'MaxSizeInMegabytes', val
139
+ end
140
+
141
+ # SizeinBytes: Number
142
+ #
143
+ # Reflects the actual bytes that messages in the queue currently occupy toward the queue's quota.
144
+ #
145
+ # Range: 0 - MaxTopicSizeinMegaBytes
146
+ def size_in_bytes
147
+ to_i description['SizeInBytes']
148
+ end
149
+
150
+ def size_in_bytes=(val)
151
+ _set 'SizeInBytes', val
152
+ end
153
+
154
+
155
+ # DefaultMessageTimeToLive: XML datetime
156
+ #
157
+ # Depending on whether DeadLettering is enabled, a message is automatically moved to the DeadLetterQueue or
158
+ # deleted if it has been stored in the queue for longer than the specified time. This value is overwritten
159
+ # by a TTL specified on the message if and only if the message TTL is smaller than the TTL set on the queue.
160
+ # This value is immutable after the Queue has been created:
161
+ #
162
+ # Range: 1 second - TimeSpan.MaxValue
163
+ # Default: TimeSpan.MaxValue
164
+ def default_message_time_to_live
165
+ to_interval description['DefaultMessageTimeToLive']
166
+ end
167
+
168
+ def default_message_time_to_live=(val)
169
+ _set 'DefaultMessageTimeToLive', val
170
+ end
171
+
172
+ # RequiresDuplicateDetection: True, False
173
+ #
174
+ # Settable only at queue creation time.
175
+ #
176
+ # Default for durable queue: false
177
+ def requires_duplicate_detection
178
+ to_bool description['RequiresDuplicateDetection']
179
+ end
180
+
181
+ def requires_duplicate_detection=(val)
182
+ _set 'RequiresDuplicateDetection', val
183
+ end
184
+
185
+ # DuplicateDetectionHistoryTimeWindow
186
+ #
187
+ # Specifies the time span during which the Service Bus will detect message duplication.
188
+ #
189
+ # Range: 1 second - 7 days
190
+ # Default: 10 minutes
191
+ def duplicate_detection_history_time_window
192
+ to_interval description['DuplicateDetectionHistoryTimeWindow']
193
+ end
194
+
195
+ def duplicate_detection_history_time_window=(val)
196
+ _set 'DuplicateDetectionHistoryTimeWindow', val
197
+ end
198
+
199
+ # EnableBatchedOperations
200
+ #
201
+ # Enables or disables service side batching behavior when performing operations for the specific queue. When
202
+ # enabled, service bus will collect/batch multiple operations to the backend to be more connection efficient.
203
+ #
204
+ # If user wants lower operation latency then they can disable this feature.
205
+ def enable_batched_operations
206
+ to_bool description['EnableBatchedOperations']
207
+ end
208
+
209
+ def enable_batched_operations=(val)
210
+ _set 'EnableBatchedOperations', val
211
+ end
212
+
213
+ def ordered_props
214
+ [
215
+ 'LockDuration',
216
+ 'MaxSizeInMegabytes',
217
+ 'RequiresDuplicateDetection',
218
+ 'RequiresSession',
219
+ 'DefaultMessageTimeToLive',
220
+ 'DeadLetteringOnMessageExpiration',
221
+ 'DuplicateDetectionHistoryTimeWindow',
222
+ 'MaxDeliveryCount',
223
+ 'EnableBatchedOperations',
224
+ 'SizeInBytes',
225
+ 'MessageCount'
226
+ ]
227
+ end
228
+ end
229
+ end
230
+ end