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
@@ -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/access_policy'
16
+
17
+ module Azure
18
+ module Service
19
+ class SignedIdentifier
20
+
21
+ def initialize
22
+ @access_policy = AccessPolicy.new
23
+ yield self if block_given?
24
+ end
25
+
26
+ attr_accessor :id
27
+ attr_accessor :access_policy
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,79 @@
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/core/signed_service'
16
+
17
+ module Azure
18
+ module Service
19
+ # A base class for StorageService implementations
20
+ class StorageService < Azure::Core::SignedService
21
+ # Create a new instance of the StorageService
22
+ #
23
+ # signer - Azure::Core::Auth::Signer. An implementation of Signer used for signing requests. (optional, Default=Azure::Core::Auth::SharedKey.new)
24
+ # account_name - String. The account name (optional, Default=Azure.config.storage_account_name)
25
+ def initialize(signer=Core::Auth::SharedKey.new, account_name=Azure.config.storage_account_name)
26
+ super(signer, account_name)
27
+ end
28
+
29
+
30
+ # Public: Get Storage Service properties
31
+ #
32
+ # See http://msdn.microsoft.com/en-us/library/windowsazure/hh452239
33
+ # See http://msdn.microsoft.com/en-us/library/windowsazure/hh452243
34
+ #
35
+ # Returns a Hash with the service properties or nil if the operation failed
36
+ def get_service_properties
37
+ uri = service_properties_uri
38
+ response = call(:get, uri)
39
+ Serialization.service_properties_from_xml response.body
40
+ end
41
+
42
+ # Public: Set Storage Service properties
43
+ #
44
+ # service_properties - An instance of Azure::Entity::Service::StorageServiceProperties
45
+ #
46
+ # See http://msdn.microsoft.com/en-us/library/windowsazure/hh452235
47
+ # See http://msdn.microsoft.com/en-us/library/windowsazure/hh452232
48
+ #
49
+ # Returns boolean indicating success.
50
+ def set_service_properties(service_properties)
51
+ body = Serialization.service_properties_to_xml service_properties
52
+
53
+ uri = service_properties_uri
54
+ call(:put, uri, body)
55
+ nil
56
+ end
57
+
58
+ # Public: Generate the URI for the service properties
59
+ #
60
+ # query - see Azure::Services::GetServiceProperties#call documentation.
61
+ #
62
+ # Returns a URI.
63
+ def service_properties_uri(query={})
64
+ query.update(restype: 'service', comp: 'properties')
65
+ generate_uri("", query)
66
+ end
67
+
68
+ # Adds metadata properties to header hash with required prefix
69
+ #
70
+ # metadata - A Hash of metadata name/value pairs
71
+ # headers - A Hash of HTTP headers
72
+ def add_metadata_to_headers(metadata, headers)
73
+ metadata.each do |key, value|
74
+ headers["x-ms-meta-#{key}"] = value
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,32 @@
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/logging'
16
+ require 'azure/service/metrics'
17
+
18
+ module Azure
19
+ module Service
20
+ class StorageServiceProperties
21
+ def initialize
22
+ @logging = Logging.new
23
+ @metrics = Metrics.new
24
+ yield self if block_given?
25
+ end
26
+
27
+ attr_accessor :logging
28
+ attr_accessor :metrics
29
+ attr_accessor :default_service_version
30
+ end
31
+ end
32
+ 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 Action < RuleAspect; end
20
+ end
21
+ end
@@ -1,66 +1,54 @@
1
- require "azure/service_bus/auth/wrap_token"
2
- require "azure/service_bus/auth/uri"
3
- require 'net/https'
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/core/filtered_service'
4
16
  require 'uri'
5
17
 
6
18
  module Azure
7
19
  module ServiceBus
8
20
  module Auth
9
- class WrapService
10
- attr :issuer
11
- attr :access_key
21
+ class WrapService < Azure::Core::FilteredService
12
22
 
13
- # Constructor
14
- #
15
- # issuer -
16
- # access_key -
17
- def initialize(issuer, access_key)
18
- @issuer = issuer
19
- @access_key = access_key
23
+ def initialize(host=Azure.config.acs_host, issuer=Azure.config.sb_issuer, access_key=Azure.config.sb_access_key)
24
+ super(host)
25
+ @issuer = issuer
26
+ @access_key = access_key
20
27
  end
21
28
 
22
- # Public: Get a valid access token for a given uri
23
- #
24
- # resource_uri - URI for the resource target
25
- #
26
- # Returns a valid Azure::ServiceBus::Auth:WrapToken
29
+ # Gets a WRAP access token with specified parameters.
30
+ #
31
+ # Returns access token (String)
27
32
  def get_access_token(resource_uri)
28
- uri = URI.wrap
29
- body = get_body(resource_uri)
30
- response = do_request(:post, uri, body)
31
-
32
- if response.code == "200"
33
- WrapToken.parse(response.body)
34
- else
35
- #FIXME: handle errors
36
- raise "Couldn't get an access_token from ACS, response was: %s" % response.body
37
- end
38
- end
33
+ uri = wrap_uri
39
34
 
40
- private
41
-
42
- def do_request(method, uri, body)
43
- headers = {
44
- "Content-Type" => "application/x-www-form-urlencoded",
45
- "Content-Length" => "0"
46
- }
47
- request = Net::HTTP::Post.new(uri.request_uri, headers)
48
- request.body = body
35
+ body = get_wrap_acs_body(resource_uri)
49
36
 
50
- http = Net::HTTP.new(uri.host, uri.port)
51
- http.use_ssl = true
52
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
37
+ headers = {
38
+ "Content-Type" => "application/x-www-form-urlencoded",
39
+ "Content-Length" => "0"
40
+ }
53
41
 
54
- response = http.request(request)
55
- response
42
+ response = call(:post, uri, body, headers)
43
+ parse_token(response.body)
56
44
  end
57
45
 
58
- # Private: Generate the wrap ACS body for the given uri as a String
46
+ # Generate the wrap ACS body for the given uri as a String
59
47
  #
60
48
  # resource_uri - The resource URI
61
49
  #
62
50
  # Returns a url-encoded String
63
- def get_body(resource_uri)
51
+ def get_wrap_acs_body(resource_uri)
64
52
  non_ssl_uri = resource_uri.dup
65
53
  non_ssl_uri.scheme = 'http'
66
54
  params = {
@@ -70,7 +58,32 @@ module Azure
70
58
  }
71
59
  ::URI.encode_www_form(params)
72
60
  end
61
+
62
+ # Generate the URI for the ACS Wrap service
63
+ #
64
+ # path - String. Path for the uri (optional, Default="WRAPv0.9")
65
+ # query - Hash. Query parameters for the uri (optional)
66
+ #
67
+ # Returns a URI.
68
+ def wrap_uri(path="WRAPv0.9", query={})
69
+ query = query || {}
70
+ uri = URI.parse(File.join(host, path))
71
+ uri.query = URI.encode_www_form(query) unless query.empty?
72
+ uri
73
+ end
74
+
75
+ def parse_token(body)
76
+ begin
77
+ decoded = URI.decode_www_form(body.strip)
78
+ token = decoded.assoc("wrap_access_token").last
79
+
80
+ expires_in = decoded.assoc("wrap_access_token_expires_in").last.to_i
81
+ return { :token => token, :expiration => Time.now.to_i + expires_in / 2 }
82
+ rescue => e
83
+ raise "Cannot get the access token from returned string: %s" % body
84
+ end
85
+ end
73
86
  end
74
87
  end
75
88
  end
76
- end
89
+ end
@@ -0,0 +1,69 @@
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 "uri"
16
+
17
+ require "azure/core/auth/signer"
18
+ require "azure/service_bus/auth/wrap_service"
19
+
20
+ module Azure
21
+ module ServiceBus
22
+ module Auth
23
+ class WrapSigner < Azure::Core::Auth::Signer
24
+
25
+ def initialize
26
+ @tokens = {}
27
+ @wrap_service = Azure::ServiceBus::Auth::WrapService.new
28
+ end
29
+
30
+ attr_accessor :tokens
31
+
32
+ def name
33
+ "WRAP"
34
+ end
35
+
36
+ public
37
+ def sign(method, uri, headers)
38
+ access_token = get_access_token(create_scope_uri(uri))
39
+ 'access_token="%s"' % access_token
40
+ end
41
+
42
+ private
43
+ def get_access_token(uri)
44
+ token = tokens[uri.to_s]
45
+ token = tokens[uri.to_s] = @wrap_service.get_access_token(uri) unless valid_token?(token)
46
+ token[:token]
47
+ end
48
+
49
+ private
50
+ def create_scope_uri(target_uri)
51
+ targetUriComponents = URI.parse(target_uri.to_s)
52
+
53
+ # ACS body and caching should be HTTP
54
+ targetUriComponents.scheme = 'http'
55
+
56
+ # ACS body and caching should not include query
57
+ targetUriComponents.query = nil
58
+
59
+ targetUriComponents
60
+ end
61
+
62
+ private
63
+ def valid_token?(token)
64
+ token and token[:expiration] > Time.now.to_i
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -1,139 +1,124 @@
1
- require "azure/error"
2
-
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
+ #--------------------------------------------------------------------------
3
15
  module Azure
4
16
  module ServiceBus
5
17
  class BrokeredMessage
6
- include Azure::ErrorHandler
7
18
 
8
19
  # Please read http://msdn.microsoft.com/en-us/library/windowsazure/hh780742
9
20
  # for more information on brokered message properties
10
21
 
11
- # Public: Get/Set the message's ContentType
22
+ # Public: Get/Set the ContentType of the message
12
23
  #
13
24
  # Returns a String
14
25
  attr_accessor :content_type
15
26
 
16
- # Public: Get/Set the message's CorrelationID
27
+ # Public: Get/Set the CorrelationID of the message
17
28
  #
18
29
  # Returns a String
19
30
  attr_accessor :correlation_id
20
31
 
21
- # Public: Get/Set the message's SessionID
32
+ # Public: Get/Set the SessionID of the message
22
33
  #
23
34
  # Returns a String
24
35
  attr_accessor :session_id
25
36
 
26
- # Public: Get/Set the message's DeliveryCount
37
+ # Public: Get/Set the DeliveryCount of the message
27
38
  #
28
39
  # Returns an Integer
29
40
  attr_accessor :delivery_count
30
41
 
31
- # Public: Get/Set the message's LockedUntilUtc
42
+ # Public: Get/Set the LockedUntilUtc for the message
32
43
  #
33
44
  # Returns a DateTime
34
45
  attr_accessor :locked_until_utc
35
46
 
36
- # Public: Get/Set the message's LockToken
47
+ # Public: Get/Set the LockToken of the message
37
48
  #
38
49
  # Returns a String (GUID)
39
50
  attr_accessor :lock_token
40
51
 
41
- # Public: Get/Set the message's MessageID
52
+ # Public: Get/Set the MessageID of the message
42
53
  #
43
54
  # Returns a String
44
55
  attr_accessor :message_id
45
56
  alias_method :id, :message_id
46
57
 
47
- # Public: Get/Set the message's Label
58
+ # Public: Get/Set the Label for the message
48
59
  #
49
60
  # Returns a String
50
61
  attr_accessor :label
51
62
 
52
- # Public: Get/Set the message's ReplyTo
63
+ # Public: Get/Set the ReplyTo for the message
53
64
  #
54
65
  # Returns a String
55
66
  attr_accessor :reply_to
56
67
 
57
- # Public: Get/Set the message's EnqueuedTimeUtc
68
+ # Public: Get/Set the EnqueuedTimeUtc for the message
58
69
  #
59
70
  # Returns a DateTime
60
71
  attr_accessor :enqueued_time_utc
61
72
 
62
- # Public: Get/Set the message's SequenceNumber
73
+ # Public: Get/Set the SequenceNumber for the message
63
74
  #
64
75
  # Returns an Integer
65
76
  attr_accessor :sequence_number
66
77
 
67
- # Public: Get/Set the message's TimeToLive
78
+ # Public: Get/Set the TimeToLive for the message
68
79
  #
69
80
  # Returns an Integer
70
81
  attr_accessor :time_to_live
71
82
 
72
- # Public: Get/Set the message's To
83
+ # Public: Get/Set the To field for the message
73
84
  #
74
85
  # Returns a String
75
86
  attr_accessor :to
76
87
 
77
- # Public: Get/Set the message's ScheduledEnqueueTimeUtc
88
+ # Public: Get/Set the ScheduledEnqueueTimeUtc for the message
78
89
  #
79
90
  # Returns a DateTime
80
91
  attr_accessor :scheduled_enqueue_time_utc
81
92
 
82
- # Public: Get/Set the message's ReplyToSessionId
93
+ # Public: Get/Set the ReplyToSessionId for the message
83
94
  #
84
95
  # Returns a String
85
96
  attr_accessor :reply_to_session_id
86
97
 
87
- # Public: Get/Set custom key-value properties for the message
98
+ # Public: Get/Set custom key-value properties of the message
88
99
  #
89
100
  # Returns a Hash
90
101
  attr_accessor :properties
91
102
 
92
- # Public: Get/Set the message's Body
103
+ # Public: Get/Set the body of the message
93
104
  #
94
105
  # Returns a String
95
106
  attr_accessor :body
96
107
 
97
- # Public: Get/Set the URI of the locked message. This URI is needed to unlock or delete the message.
108
+ # Public: Get/Set the URI of the locked message. This URI is needed to unlock or delete the message
98
109
  #
99
110
  # Returns an URI
100
111
  attr_accessor :location
101
112
 
102
- # Public: Instantiate a message from an error object.
103
- #
104
- # error - An Azure::Error.
105
- #
106
- # Returns a BrokeredMessage.
107
- def self.from_error(error)
108
- queue = new(nil)
109
- queue.error = error
110
- queue
111
- end
112
-
113
113
  # Public: Constructor.
114
114
  #
115
- # name - A String with the name of the queue.
116
- # description - The queue description Hash
117
- # service - The Queue service to perform external calls.
118
- def initialize(body, properties={}, service=Azure::ServiceBus::Queues)
115
+ # body - String. The body of the message
116
+ # properties - Hash. The properties of the message (optional)
117
+ def initialize(body, properties={})
119
118
  @body = body
120
119
  @properties = properties
121
- @service = service
122
120
  yield self if block_given?
123
121
  end
124
-
125
- def delete
126
- @service.delete(self)
127
- end
128
-
129
- # Public: Compare two messages to see if they are the same.
130
- #
131
- # other - A BrokeredMessage.
132
- #
133
- # Returns true|false.
134
- def ==(other)
135
- id == other.id
136
- end
137
122
  end
138
123
  end
139
- end
124
+ end