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,78 +0,0 @@
1
- require "azure/configuration"
2
- require "uri"
3
-
4
- module Azure
5
- module Queues
6
- module URI
7
- # Public: generate the URI for the service properties
8
- #
9
- # query - see Azure::Services::GetServiceProperties#call documentation.
10
- # host - The host of the API.
11
- #
12
- # Returns a URI.
13
- def self.service_properties(query={}, host=Azure.config.queue_host)
14
- query.update(restype: 'service', comp: 'properties')
15
- generate(host, "", query)
16
- end
17
-
18
- # Public: generate the URI for the collection of queues.
19
- #
20
- # query - see Azure::Services::ListQueues#call documentation.
21
- # host - The host of the API.
22
- #
23
- # Returns a URI.
24
- def self.collection(query={}, host=Azure.config.queue_host)
25
- query.update(comp: 'list', include: 'metadata')
26
- generate(host, "", query)
27
- end
28
-
29
- # Public: Generate the URI for a given queue.
30
- #
31
- # queue_name - The name of the queue.
32
- # query - A Hash of query parameters (default: {}).
33
- # host - The host of the API.
34
- #
35
- # Returns a URI.
36
- def self.queue(queue_name, query={}, host=Azure.config.queue_host)
37
- return queue_name if name.kind_of? ::URI
38
- generate(host, queue_name, query)
39
- end
40
-
41
- # Public: Generate the messages URI for the given queue.
42
- #
43
- # queue_name - The name of the queue.
44
- # query - A Hash of query parameters (default: {}).
45
- # host - The host of the API.
46
- #
47
- # Returns a URI.
48
- def self.messages(queue_name, query={}, host=Azure.config.queue_host)
49
- generate(host, "#{queue_name}/messages", query)
50
- end
51
-
52
- # Public: generate the URI for a given message
53
- #
54
- # queue_name - The name of the queue.
55
- # message_id - The id of the message.
56
- # query - A Hash of query parameters (default: {}).
57
- # host - The host of the API.
58
- #
59
- # Returns a URI.
60
- def self.message(queue_name, message_id, query={}, host=Azure.config.queue_host)
61
- generate(host, "#{queue_name}/messages/#{message_id}", query)
62
- end
63
-
64
- # Utility method to generate the URI.
65
- #
66
- # host - A String with the URI's host.
67
- # path - A String with the URI's path.
68
- # query - A simple Hash with query parameters (default: {}).
69
- #
70
- # Returns a URI.
71
- def self.generate(host, path, query={})
72
- uri = ::URI.parse(File.join(host, path))
73
- uri.query = ::URI.encode_www_form(query) unless query.empty?
74
- uri
75
- end
76
- end
77
- end
78
- end
@@ -1,102 +0,0 @@
1
- require "digest/md5"
2
- require "base64"
3
- require "net/http"
4
- require "time"
5
- require "azure/response"
6
-
7
- module Azure
8
- class Request
9
- # Public: The URI we're requesting.
10
- attr :uri
11
-
12
- # Public: A Hash of request headers.
13
- attr :headers
14
-
15
- # Public: The HTTP method of the request.
16
- attr :method
17
-
18
- # Public: The request body (in Atom) or nil.
19
- attr :body
20
-
21
- # Public: Build the HTTP Request.
22
- #
23
- # method - The HTTP request method.
24
- # uri - The URI we'll hit.
25
- # body - The request body, or nil.
26
- # clock - An object that responds to .now and returns a Time.
27
- def initialize(method, uri, body=nil, clock=Clock.new)
28
- @method = method
29
- @uri = uri
30
- @body = body
31
- @headers = {}
32
- @clock = clock
33
-
34
- calculate_headers
35
- end
36
-
37
- # Public: Make the request.
38
- #
39
- # ssl - Use SSL (default: false)
40
- #
41
- # Returns an Azure::Response.
42
- def request!(ssl=false)
43
- req = http_requester.new(uri.request_uri, headers)
44
- req.body = body if body
45
-
46
- http = Net::HTTP.new(uri.host, uri.port)
47
- if uri.scheme == 'https' || ssl
48
- # require 'net/https'
49
- http.use_ssl = true
50
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
- end
52
-
53
- Response.new(http.request(req))
54
- end
55
-
56
- # Build the headers Hash.
57
- #
58
- # Returns nothing.
59
- def calculate_headers
60
- headers["x-ms-date"] = @clock.now
61
- headers["x-ms-version"] = "2011-08-18"
62
- headers["DataServiceVersion"] = "1.0;NetFx"
63
- headers["MaxDataServiceVersion"] = "2.0;NetFx"
64
-
65
- if body
66
- headers["Content-Type"] = "application/atom+xml; charset=utf-8"
67
- headers["Content-Length"] = body.bytesize.to_s
68
- headers["Content-MD5"] = Base64.strict_encode64(Digest::MD5.digest(body))
69
- else
70
- headers["Content-Length"] = "0"
71
- end
72
- end
73
-
74
- # Obtain the Net::HTTP class that will handle this request.
75
- #
76
- # Returns a subclass of Net::HTTPRequest
77
- def http_requester
78
- Net::HTTP.const_get(method.to_s.capitalize)
79
- rescue NameError => e
80
- e.message = "#{method} is an invalid HTTP method"
81
- raise
82
- end
83
-
84
- # Utility class to generate timestamps in a format the Azure platform likes.
85
- class Clock
86
- # Initialize the clock.
87
- #
88
- # source - Injectable dependency on the Time class.
89
- def initialize(source=Time)
90
- @source = source
91
- end
92
-
93
- # Calculate the time of "now", converted into something the Azure backend
94
- # likes.
95
- #
96
- # Returns a String with the time formatted in accordance to RFC 2616.
97
- def now
98
- @source.now.httpdate
99
- end
100
- end
101
- end
102
- end
@@ -1,93 +0,0 @@
1
- require "azure/error"
2
-
3
- module Azure
4
- # A small proxy to clean up the API of Net::HTTPResponse.
5
- class Response
6
-
7
- # Public: Initialize a new response.
8
- #
9
- # http_response - A Net::HTTPResponse.
10
- def initialize(http_response)
11
- @http_response = http_response
12
- end
13
-
14
- # Public: Get the response body.
15
- #
16
- # Returns a String.
17
- def body
18
- @http_response.body
19
- end
20
-
21
- # Public: Get the response status code.
22
- #
23
- # Returns a Fixnum.
24
- def code
25
- @http_response.code.to_i
26
- end
27
-
28
- # Public: Check if this response was successful. A request is considered
29
- # successful if the response is in the 200 - 399 range.
30
- #
31
- # Returns true|false.
32
- def success?
33
- (200..399).include? code
34
- end
35
-
36
- # Public: Get all the response headers as a Hash.
37
- #
38
- # Returns a Hash.
39
- def headers
40
- @headers ||= HeaderHash.new(@http_response.to_hash)
41
- end
42
-
43
- # Public: Get an error that wraps this HTTP response, as long as this
44
- # response was unsuccessful. This method _should not_ be called if the
45
- # response was successful.
46
- #
47
- # Returns an Azure::HTTPError.
48
- def exception
49
- Azure::HTTPError.new(self)
50
- end
51
- alias_method :error, :exception
52
-
53
- # HTTP Headers are case insensitive, and the Azure APIs seem to like this a
54
- # lot (documenting headers in one case and sending them in another). Also
55
- # this wraps Net::HTTPResponse headers by returning their values as strings,
56
- # not arrays.
57
- class HeaderHash < Hash
58
- # Public: Initialize the header hash.
59
- #
60
- # headers - A Hash of headers as returned from Net::HTTPResponse#to_hash.
61
- def initialize(headers)
62
- super
63
- headers = Hash[headers.map { |k,v| [k.downcase.freeze, v.first.freeze] }]
64
- replace(headers)
65
- end
66
-
67
- # Public: Get a header's value or nil if it's not present.
68
- #
69
- # header - A string with the header's name.
70
- #
71
- # Returns a String or nil.
72
- def [](header)
73
- super(header.downcase)
74
- end
75
-
76
- # Public: Get a header's value or a specified default.
77
- #
78
- # header - A string with the header's name.
79
- # default - A default value.
80
- #
81
- # Yields a block where you can specify the default value.
82
- #
83
- # Returns a String, or the specified default.
84
- def fetch(header, *default, &block)
85
- if (args = default.size) > 1
86
- raise ArgumentError, "wrong number of arguments(#{args + 1} for 2)"
87
- end
88
-
89
- super(header.downcase, *default, &block)
90
- end
91
- end
92
- end
93
- end
@@ -1,4 +0,0 @@
1
- require "azure/service_bus/queues"
2
- require "azure/service_bus/topics"
3
- require "azure/service_bus/subscriptions"
4
- require "azure/service_bus/rules"
@@ -1,22 +0,0 @@
1
- require "azure/configuration"
2
-
3
- module Azure
4
- module ServiceBus
5
- module Auth
6
- class Authorizer
7
- # Public: Signs an HTTP request before it's made, by adding the
8
- # Authorization header.
9
- #
10
- # request - An Azure::Request that hasn't been signed.
11
- # signer - A signing strategy, such as Azure::ServiceBus::Auth::Wrap.
12
- #
13
- # Returns the modified request.
14
- def sign(request, signer)
15
- signature = signer.sign(request)
16
- request.headers["Authorization"] = "#{signature}"
17
- request
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,52 +0,0 @@
1
- require "azure/configuration"
2
- require "uri"
3
-
4
- module Azure
5
- module ServiceBus
6
- module Auth
7
- module URI
8
- # Public: generate the URI for the ACS Wrap service
9
- #
10
- # options - see Azure::ServiceBus::Auth::WrapService.get_access_token documentation.
11
- # host - The host of the API.
12
- #
13
- # Returns a URI.
14
- def self.wrap(options={}, host=Azure.config.acs_host)
15
- generate(host, "WRAPv0.9", options)
16
- end
17
-
18
- # Utility method to generate the URI.
19
- #
20
- # host - A String with the URI's host.
21
- # path - A String with the URI's path.
22
- # params - A simple Hash with query parameters (default: {}).
23
- #
24
- # Returns a URI.
25
- def self.generate(host, path, params = {})
26
- uri = join(host, path)
27
- uri.query = to_query(params) unless params.empty?
28
- uri
29
- end
30
-
31
- # Utility method to URL encode form data from a given hash
32
- #
33
- # hash - A Hash with params
34
- #
35
- # Returns a String (application/x-www-form-urlencoded data)
36
- def self.to_query(hash)
37
- ::URI.encode_www_form(hash)
38
- end
39
-
40
- # Utility method to generate the URI.
41
- #
42
- # host - A String with the URI's host.
43
- # path - A String with the URI's path.
44
- #
45
- # Returns a URI.
46
- def self.join(host, path)
47
- ::URI.parse(File.join(host, path))
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,37 +0,0 @@
1
- require "azure/configuration"
2
- require "azure/service_bus/auth/wrap_token_manager"
3
-
4
- module Azure
5
- module ServiceBus
6
- module Auth
7
- # Signing strategy for WRAP
8
- #
9
- class Wrap
10
- # Public: Initialize the Signer.
11
- #
12
- # issuer -
13
- # access_key - The Azure ServiceBus access_key encoded in Base64.
14
- def initialize(issuer=Azure.config.sb_issuer, access_key=Azure.config.sb_access_key, token_manager=nil)
15
- @wrap_token_manager = token_manager || WrapTokenManager.new(issuer, access_key)
16
- end
17
-
18
- # Public: The name of the strategy.
19
- #
20
- # Returns a String.
21
- def name
22
- "Wrap"
23
- end
24
-
25
- # Public: Generate a request signature.
26
- #
27
- # request - The HTTP request
28
- #
29
- # Returns a String
30
- def sign(request)
31
- access_token = @wrap_token_manager.get_access_token(request.uri)
32
- 'WRAP access_token="%s"' % access_token
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,45 +0,0 @@
1
- require 'uri'
2
-
3
- module Azure
4
- module ServiceBus
5
- module Auth
6
- class WrapToken
7
- attr_accessor :access_token
8
- attr_accessor :expire_time
9
-
10
- def initialize(token, expire_time)
11
- @access_token = token
12
- @expire_time = expire_time
13
- end
14
-
15
- # Public: Instantiate a WrapToken from the HTTP response body.
16
- #
17
- # boddy - a String as returned by the ACS in the response body.
18
- #
19
- # Returns a WrapToken.
20
- def self.parse(body)
21
- begin
22
- decoded = ::URI.decode_www_form(body.strip)
23
- token = decoded.assoc("wrap_access_token").last
24
- expiration = decoded.assoc("wrap_access_token_expires_in").last
25
- new(token, expiration)
26
- rescue => e
27
- # TODO: hanlde errors
28
- raise "Cannot get the access token from returned string: %s" % body
29
- end
30
- end
31
-
32
- # Public: Instantiate a queue from an error object.
33
- #
34
- # error - An Azure::Error.
35
- #
36
- # Returns a Queue.
37
- def self.from_error(error)
38
- queue = new(nil)
39
- queue.error = error
40
- queue
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,46 +0,0 @@
1
- require "azure/service_bus/auth/wrap_service"
2
- require "azure/service_bus/auth/wrap_token"
3
-
4
- module Azure
5
- module ServiceBus
6
- module Auth
7
- class WrapTokenManager
8
-
9
- # The service used to get new tokens from the ACS
10
- #
11
- # Returns an Azure::ServiceBus::Auth::WrapService
12
- attr :wrap_service
13
-
14
- # A list of active WrapTokens
15
- #
16
- # Returns an Array of Azure::ServiceBus::Auth::WrapToken
17
- attr :active_tokens
18
-
19
- # Constructor
20
- #
21
- # issuer -
22
- # access_key -
23
- # host -
24
- def initialize(issuer, access_key)
25
- @active_tokens = {}
26
- @wrap_service = WrapService.new(issuer, access_key)
27
- end
28
-
29
- # Gets a valid (not expired) access token for the given uri
30
- #
31
- # uri - URI for the resource target
32
- #
33
- # Returns a String
34
- def get_access_token(uri)
35
- token = @active_tokens[uri.path]
36
- now = Time.now.utc
37
- unless token && token.expire_time > now
38
- @active_tokens[uri.path] = @wrap_service.get_access_token(uri)
39
- token = @active_tokens[uri.path]
40
- end
41
- token.access_token
42
- end
43
- end
44
- end
45
- end
46
- end