stuartpreston-azure-sdk-for-ruby 0.6.5

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 (292) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +10 -0
  4. data/ChangeLog.txt +40 -0
  5. data/Gemfile +16 -0
  6. data/README.md +616 -0
  7. data/Rakefile +133 -0
  8. data/azure.gemspec +44 -0
  9. data/lib/azure.rb +52 -0
  10. data/lib/azure/base_management/affinity_group.rb +32 -0
  11. data/lib/azure/base_management/base_management_service.rb +234 -0
  12. data/lib/azure/base_management/location.rb +27 -0
  13. data/lib/azure/base_management/management_http_request.rb +172 -0
  14. data/lib/azure/base_management/serialization.rb +129 -0
  15. data/lib/azure/base_management/sql_management_http_request.rb +45 -0
  16. data/lib/azure/blob/blob.rb +32 -0
  17. data/lib/azure/blob/blob_service.rb +1423 -0
  18. data/lib/azure/blob/block.rb +31 -0
  19. data/lib/azure/blob/container.rb +32 -0
  20. data/lib/azure/blob/serialization.rb +285 -0
  21. data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
  22. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -0
  23. data/lib/azure/cloud_service_management/serialization.rb +117 -0
  24. data/lib/azure/core.rb +39 -0
  25. data/lib/azure/core/auth/authorizer.rb +36 -0
  26. data/lib/azure/core/auth/shared_key.rb +110 -0
  27. data/lib/azure/core/auth/shared_key_lite.rb +48 -0
  28. data/lib/azure/core/auth/signer.rb +48 -0
  29. data/lib/azure/core/configuration.rb +211 -0
  30. data/lib/azure/core/error.rb +22 -0
  31. data/lib/azure/core/filtered_service.rb +44 -0
  32. data/lib/azure/core/http/debug_filter.rb +36 -0
  33. data/lib/azure/core/http/http_error.rb +88 -0
  34. data/lib/azure/core/http/http_filter.rb +53 -0
  35. data/lib/azure/core/http/http_request.rb +157 -0
  36. data/lib/azure/core/http/http_response.rb +140 -0
  37. data/lib/azure/core/http/retry_policy.rb +74 -0
  38. data/lib/azure/core/http/signer_filter.rb +34 -0
  39. data/lib/azure/core/service.rb +63 -0
  40. data/lib/azure/core/signed_service.rb +43 -0
  41. data/lib/azure/core/utility.rb +190 -0
  42. data/lib/azure/queue/message.rb +30 -0
  43. data/lib/azure/queue/queue.rb +29 -0
  44. data/lib/azure/queue/queue_service.rb +568 -0
  45. data/lib/azure/queue/serialization.rb +106 -0
  46. data/lib/azure/service/access_policy.rb +26 -0
  47. data/lib/azure/service/cors.rb +11 -0
  48. data/lib/azure/service/cors_rule.rb +15 -0
  49. data/lib/azure/service/enumeration_results.rb +21 -0
  50. data/lib/azure/service/logging.rb +32 -0
  51. data/lib/azure/service/metrics.rb +31 -0
  52. data/lib/azure/service/retention_policy.rb +25 -0
  53. data/lib/azure/service/serialization.rb +298 -0
  54. data/lib/azure/service/signed_identifier.rb +30 -0
  55. data/lib/azure/service/storage_service.rb +83 -0
  56. data/lib/azure/service/storage_service_properties.rb +37 -0
  57. data/lib/azure/service_bus/action.rb +21 -0
  58. data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
  59. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  60. data/lib/azure/service_bus/brokered_message.rb +124 -0
  61. data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
  62. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  63. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  64. data/lib/azure/service_bus/false_filter.rb +38 -0
  65. data/lib/azure/service_bus/filter.rb +21 -0
  66. data/lib/azure/service_bus/interval.rb +104 -0
  67. data/lib/azure/service_bus/queue.rb +230 -0
  68. data/lib/azure/service_bus/relay.rb +88 -0
  69. data/lib/azure/service_bus/resource.rb +109 -0
  70. data/lib/azure/service_bus/rule.rb +98 -0
  71. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  72. data/lib/azure/service_bus/serialization.rb +161 -0
  73. data/lib/azure/service_bus/service_bus_service.rb +897 -0
  74. data/lib/azure/service_bus/sql_filter.rb +50 -0
  75. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  76. data/lib/azure/service_bus/subscription.rb +184 -0
  77. data/lib/azure/service_bus/topic.rb +187 -0
  78. data/lib/azure/service_bus/true_filter.rb +38 -0
  79. data/lib/azure/sql_database_management/serialization.rb +111 -0
  80. data/lib/azure/sql_database_management/sql_database.rb +31 -0
  81. data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
  82. data/lib/azure/storage_management/serialization.rb +184 -0
  83. data/lib/azure/storage_management/storage_account.rb +40 -0
  84. data/lib/azure/storage_management/storage_management_service.rb +166 -0
  85. data/lib/azure/table/auth/shared_key.rb +92 -0
  86. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  87. data/lib/azure/table/batch.rb +330 -0
  88. data/lib/azure/table/batch_response.rb +118 -0
  89. data/lib/azure/table/edmtype.rb +127 -0
  90. data/lib/azure/table/entity.rb +31 -0
  91. data/lib/azure/table/guid.rb +24 -0
  92. data/lib/azure/table/query.rb +112 -0
  93. data/lib/azure/table/serialization.rb +108 -0
  94. data/lib/azure/table/table_service.rb +560 -0
  95. data/lib/azure/version.rb +31 -0
  96. data/lib/azure/virtual_machine_image_management/serialization.rb +66 -0
  97. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
  98. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
  99. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -0
  100. data/lib/azure/virtual_machine_management/serialization.rb +463 -0
  101. data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -0
  102. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +589 -0
  103. data/lib/azure/virtual_network_management/serialization.rb +186 -0
  104. data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
  105. data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
  106. data/test/fixtures/32px-fulls-black.jpg +0 -0
  107. data/test/fixtures/affinity_group.xml +33 -0
  108. data/test/fixtures/all_containers.xml +20 -0
  109. data/test/fixtures/all_tables.xml +22 -0
  110. data/test/fixtures/certificate.pem +21 -0
  111. data/test/fixtures/container_acl.xml +11 -0
  112. data/test/fixtures/create_sql_database_server.xml +2 -0
  113. data/test/fixtures/create_storage_desc_error.xml +5 -0
  114. data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
  115. data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
  116. data/test/fixtures/create_storage_full_error.xml +6 -0
  117. data/test/fixtures/create_storage_label_error.xml +5 -0
  118. data/test/fixtures/create_storage_location_error.xml +5 -0
  119. data/test/fixtures/create_storage_name_error.xml +6 -0
  120. data/test/fixtures/create_table_response_entry.xml +15 -0
  121. data/test/fixtures/delete_storage_container_error.xml +5 -0
  122. data/test/fixtures/delete_storage_error.xml +5 -0
  123. data/test/fixtures/deployment_error.xml +5 -0
  124. data/test/fixtures/empty_xml_file +0 -0
  125. data/test/fixtures/get_storage_account_error.xml +5 -0
  126. data/test/fixtures/get_storage_account_properties.xml +32 -0
  127. data/test/fixtures/get_storage_account_properties_new.xml +32 -0
  128. data/test/fixtures/http_error.xml +5 -0
  129. data/test/fixtures/insert_entity_response_entry.xml +25 -0
  130. data/test/fixtures/list_affinity_groups.xml +22 -0
  131. data/test/fixtures/list_blobs.xml +121 -0
  132. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  133. data/test/fixtures/list_blocks_all.xml +23 -0
  134. data/test/fixtures/list_blocks_committed.xml +13 -0
  135. data/test/fixtures/list_cloud_services.xml +39 -0
  136. data/test/fixtures/list_containers.xml +38 -0
  137. data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
  138. data/test/fixtures/list_images.xml +110 -0
  139. data/test/fixtures/list_locations.xml +62 -0
  140. data/test/fixtures/list_page_ranges.xml +11 -0
  141. data/test/fixtures/list_sql_database.xml +36 -0
  142. data/test/fixtures/list_sql_server_firewall.xml +23 -0
  143. data/test/fixtures/list_storage_account_single.xml +25 -0
  144. data/test/fixtures/list_storage_accounts.xml +46 -0
  145. data/test/fixtures/list_virtual_networks.xml +92 -0
  146. data/test/fixtures/logging.xml +11 -0
  147. data/test/fixtures/management_certificate.pem +55 -0
  148. data/test/fixtures/messages.xml +12 -0
  149. data/test/fixtures/metrics.xml +10 -0
  150. data/test/fixtures/privatekey.key +28 -0
  151. data/test/fixtures/query_entities_empty_response.xml +7 -0
  152. data/test/fixtures/query_entities_response.xml +45 -0
  153. data/test/fixtures/queue_service_properties.xml +22 -0
  154. data/test/fixtures/queue_service_properties_original.xml +19 -0
  155. data/test/fixtures/queues.xml +16 -0
  156. data/test/fixtures/retention_policy.xml +5 -0
  157. data/test/fixtures/sb_default_create_queue_response.xml +23 -0
  158. data/test/fixtures/sb_default_create_relay_response.xml +15 -0
  159. data/test/fixtures/sb_default_create_topic_response.xml +18 -0
  160. data/test/fixtures/sb_get_access_token_response.txt +1 -0
  161. data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
  162. data/test/fixtures/storage_service_properties.xml +54 -0
  163. data/test/fixtures/update_storage_account.xml +16 -0
  164. data/test/fixtures/update_storage_error.xml +5 -0
  165. data/test/fixtures/updated_storage_accounts.xml +53 -0
  166. data/test/fixtures/virtual_machine.xml +113 -0
  167. data/test/fixtures/windows_virtual_machine.xml +106 -0
  168. data/test/integration/affinity_group/Affinity_test.rb +55 -0
  169. data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
  170. data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
  171. data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
  172. data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
  173. data/test/integration/blob/blob_gb18030_test.rb +199 -0
  174. data/test/integration/blob/blob_metadata_test.rb +75 -0
  175. data/test/integration/blob/blob_pages_test.rb +119 -0
  176. data/test/integration/blob/blob_properties_test.rb +77 -0
  177. data/test/integration/blob/block_blob_test.rb +254 -0
  178. data/test/integration/blob/container/container_acl_test.rb +69 -0
  179. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  180. data/test/integration/blob/container/create_container_test.rb +60 -0
  181. data/test/integration/blob/container/delete_container_test.rb +39 -0
  182. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  183. data/test/integration/blob/container/list_containers_test.rb +79 -0
  184. data/test/integration/blob/container/root_container_test.rb +54 -0
  185. data/test/integration/blob/copy_blob_test.rb +113 -0
  186. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  187. data/test/integration/blob/create_page_blob_test.rb +83 -0
  188. data/test/integration/blob/delete_blob_test.rb +159 -0
  189. data/test/integration/blob/get_blob_test.rb +65 -0
  190. data/test/integration/blob/informative_errors_test.rb +39 -0
  191. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  192. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  193. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  194. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  195. data/test/integration/blob/list_blobs_test.rb +113 -0
  196. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  197. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  198. data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
  199. data/test/integration/database/create_sql_server_test.rb +53 -0
  200. data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
  201. data/test/integration/database/delete_sql_server_test.rb +58 -0
  202. data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
  203. data/test/integration/database/list_sql_servers_test.rb +44 -0
  204. data/test/integration/database/reset_password_sql_server_test.rb +55 -0
  205. data/test/integration/location/Location_List_test.rb +39 -0
  206. data/test/integration/queue/clear_messages_test.rb +42 -0
  207. data/test/integration/queue/create_message_test.rb +75 -0
  208. data/test/integration/queue/create_queue_test.rb +50 -0
  209. data/test/integration/queue/delete_message_test.rb +67 -0
  210. data/test/integration/queue/delete_queue_test.rb +45 -0
  211. data/test/integration/queue/informative_errors_test.rb +42 -0
  212. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  213. data/test/integration/queue/list_messages_test.rb +79 -0
  214. data/test/integration/queue/list_queues_test.rb +44 -0
  215. data/test/integration/queue/peek_messages_test.rb +59 -0
  216. data/test/integration/queue/queue_gb18030_test.rb +131 -0
  217. data/test/integration/queue/queue_metadata_test.rb +40 -0
  218. data/test/integration/queue/update_message_test.rb +74 -0
  219. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  220. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  221. data/test/integration/service_bus/queues_test.rb +266 -0
  222. data/test/integration/service_bus/relay_test.rb +132 -0
  223. data/test/integration/service_bus/rules_test.rb +145 -0
  224. data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
  225. data/test/integration/service_bus/scenario_test.rb +101 -0
  226. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  227. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  228. data/test/integration/service_bus/topics_test.rb +129 -0
  229. data/test/integration/storage_management/storage_management_test.rb +160 -0
  230. data/test/integration/table/create_table_test.rb +36 -0
  231. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  232. data/test/integration/table/delete_entity_test.rb +94 -0
  233. data/test/integration/table/delete_table_test.rb +40 -0
  234. data/test/integration/table/get_table_test.rb +37 -0
  235. data/test/integration/table/informative_errors_test.rb +39 -0
  236. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  237. data/test/integration/table/insert_entity_test.rb +88 -0
  238. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  239. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  240. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  241. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  242. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  243. data/test/integration/table/merge_entity_test.rb +113 -0
  244. data/test/integration/table/query_entities_test.rb +195 -0
  245. data/test/integration/table/query_tables_test.rb +43 -0
  246. data/test/integration/table/query_test.rb +251 -0
  247. data/test/integration/table/table_acl_test.rb +52 -0
  248. data/test/integration/table/table_gb18030_test.rb +355 -0
  249. data/test/integration/table/update_entity_batch_test.rb +149 -0
  250. data/test/integration/table/update_entity_test.rb +131 -0
  251. data/test/integration/test_helper.rb +42 -0
  252. data/test/integration/vm/VM_Create_test.rb +260 -0
  253. data/test/integration/vm/VM_Delete_test.rb +55 -0
  254. data/test/integration/vm/VM_Operations_test.rb +173 -0
  255. data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
  256. data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
  257. data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
  258. data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
  259. data/test/support/env.rb +19 -0
  260. data/test/support/fixtures.rb +36 -0
  261. data/test/support/name_generator.rb +168 -0
  262. data/test/support/stubs.rb +42 -0
  263. data/test/support/virtual_machine_name_generator.rb +102 -0
  264. data/test/support/virtual_network_helper.rb +73 -0
  265. data/test/test_helper.rb +54 -0
  266. data/test/unit/affinity_group/affinity_group_test.rb +192 -0
  267. data/test/unit/affinity_group/serialization_test.rb +88 -0
  268. data/test/unit/base_management/location_test.rb +57 -0
  269. data/test/unit/blob/blob_service_test.rb +1947 -0
  270. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
  271. data/test/unit/cloud_service_management/serialization_test.rb +169 -0
  272. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  273. data/test/unit/core/auth/shared_key_test.rb +58 -0
  274. data/test/unit/core/auth/signer_test.rb +30 -0
  275. data/test/unit/core/http/http_error_test.rb +57 -0
  276. data/test/unit/core/http/http_request_test.rb +66 -0
  277. data/test/unit/core/http/http_response_test.rb +45 -0
  278. data/test/unit/core/http/retry_policy_test.rb +23 -0
  279. data/test/unit/database/serialization_test.rb +97 -0
  280. data/test/unit/database/sql_database_server_service_test.rb +288 -0
  281. data/test/unit/service/serialization_test.rb +533 -0
  282. data/test/unit/service/storage_service_test.rb +293 -0
  283. data/test/unit/storage_management/serialization_test.rb +232 -0
  284. data/test/unit/storage_management/storage_management_service_test.rb +261 -0
  285. data/test/unit/table/edmtype_test.rb +108 -0
  286. data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
  287. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
  288. data/test/unit/virtual_machine_management/serialization_test.rb +258 -0
  289. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
  290. data/test/unit/vnet/serialization_test.rb +187 -0
  291. data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
  292. metadata +476 -0
@@ -0,0 +1,88 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. 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 Relay < Resource
20
+ # Public: Initialize the relay endpoint.
21
+ #
22
+ # ==== Attributes
23
+ #
24
+ # * +name+ - A String with the name of the relay endpoint.
25
+ # * +options+ - The resource options Hash
26
+ #
27
+ # ==== Options
28
+ #
29
+ # Accepted key/value pairs in options parameter are:
30
+ # * +:relay_type+ - String. Determines the type of the relay endpoint. This is required.
31
+ # * +:requires_client_authorization+ - Boolean. Determines whether or not clients need to authenticate when making calls.
32
+ # * +:requires_transport_security+ - Boolean. Determines whether or not the endpoint uses transport security.
33
+ #
34
+ def initialize(name, options)
35
+ normalized_options = {}
36
+ normalized_options["RelayType"] = options[:relay_type].to_s
37
+ normalized_options["RequiresClientAuthorization"] = options[:requires_client_authorization].to_s if options.has_key?(:requires_client_authorization)
38
+ normalized_options["RequiresTransportSecurity"] = options[:requires_transport_security].to_s if options.has_key?(:requires_transport_security)
39
+ super(name, normalized_options)
40
+ end
41
+
42
+ # RelayType: String
43
+ #
44
+ # Displays the relay type of the endpoint.
45
+ def relay_type
46
+ description['RelayType']
47
+ end
48
+
49
+ def relay_type=(val)
50
+ _set 'RelayType', val
51
+ end
52
+
53
+ # RequiresClientAuthorization: Boolean
54
+ #
55
+ # Determines whether or not clients need to authenticate when making calls.
56
+ #
57
+ # Default: true
58
+ def requires_client_authorization
59
+ to_bool description['RequiresClientAuthorization']
60
+ end
61
+
62
+ def requires_client_authorization=(val)
63
+ _set 'RequiresClientAuthorization', val
64
+ end
65
+
66
+ # RequiresTransportSecurity: Boolean
67
+ #
68
+ # Determines whether or not the endpoint uses transport security.
69
+ #
70
+ # Default: true
71
+ def requires_transport_security
72
+ to_bool description['RequiresTransportSecurity']
73
+ end
74
+
75
+ def requires_transport_security=(val)
76
+ _set 'RequiresTransportSecurity', val
77
+ end
78
+
79
+ def ordered_props
80
+ [
81
+ 'RelayType',
82
+ 'RequiresClientAuthorization',
83
+ 'RequiresTransportSecurity'
84
+ ]
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,109 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. 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
+ require 'azure/service_bus/interval'
17
+
18
+ module Azure
19
+ module ServiceBus
20
+ class Resource
21
+ # Public: Initialize the resource (either queue, topic, rule or subscription).
22
+ #
23
+ # name - A String with the name of the resource.
24
+ # description - The resource description Hash
25
+ def initialize(name, description = {})
26
+ @name = name
27
+ @description = description
28
+ yield self if block_given?
29
+ end
30
+
31
+ # Get the Resource's ID.
32
+ #
33
+ # Returns a URI.
34
+ attr_accessor :id
35
+ alias_method :url, :id
36
+
37
+ # Get the Resource's name.
38
+ #
39
+ # Returns a String.
40
+ attr_accessor :name
41
+ alias_method :title, :name
42
+
43
+ # Public: Get the published time
44
+ #
45
+ # Returns a Time
46
+ attr_accessor :published
47
+
48
+ # Public: Get the updated time
49
+ #
50
+ # Returns a Time
51
+ attr_accessor :updated
52
+
53
+ # Public: Get the author name
54
+ #
55
+ # Returns a String
56
+ attr_accessor :author_name
57
+
58
+ # Public: Resource description
59
+ #
60
+ # Returns a Hash
61
+ attr_accessor :description
62
+
63
+ def get_props
64
+ desc = description.dup
65
+ props = []
66
+ ordered_props.each { |prop_name|
67
+ if desc[prop_name]
68
+ props.push [prop_name, desc[prop_name]]
69
+ desc.delete prop_name
70
+ end
71
+ }
72
+ desc.each { |k,v|
73
+ props.push [k, v]
74
+ }
75
+ props
76
+ end
77
+
78
+ private
79
+
80
+ def to_interval(s)
81
+ s ? Interval.parse(s) : s
82
+ end
83
+
84
+ def to_time(s)
85
+ s ? Time.parse(s) : s
86
+ end
87
+
88
+ def to_i(s)
89
+ s ? s.to_i : s
90
+ end
91
+
92
+ def to_bool(s)
93
+ s ? (s || "").downcase == 'true' : s
94
+ end
95
+
96
+ def _set(name, value)
97
+ if value
98
+ description[name] = value.to_s
99
+ else
100
+ description.delete name
101
+ end
102
+ end
103
+
104
+ def ordered_props
105
+ []
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,98 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. 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
+ require 'azure/service_bus/rule_aspect'
17
+
18
+ require 'azure/service_bus/sql_filter'
19
+ require 'azure/service_bus/true_filter'
20
+ require 'azure/service_bus/false_filter'
21
+ require 'azure/service_bus/correlation_filter'
22
+
23
+ require 'azure/service_bus/sql_rule_action'
24
+ require 'azure/service_bus/empty_rule_action'
25
+
26
+ module Azure
27
+ module ServiceBus
28
+ class Rule < Resource
29
+
30
+ attr_accessor :topic
31
+ attr_accessor :subscription
32
+
33
+ # Public: Initialize the rule.
34
+ #
35
+ # ==== Attributes
36
+ #
37
+ # * +name+ - A String with the name of the rule.
38
+ # * +options+ - The resource options Hash
39
+ #
40
+ # ==== Options
41
+ #
42
+ # Accepted key/value pairs in options parameter are:
43
+ # * +:filter+ - String. The rule filter.
44
+ # * +:action+ - String. The rule action.
45
+ #
46
+ def initialize(name, options = {})
47
+ normalized_options = {}
48
+ normalized_options["Filter"] = options[:filter] if options.has_key?(:filter)
49
+ normalized_options["Action"] = options[:action] if options.has_key?(:action)
50
+
51
+ super(name, normalized_options)
52
+ end
53
+
54
+ # Filter: SqlFilter, TrueFilter /FalseFiilter, CorrelationFilter
55
+ #
56
+ # The Filter property references an instance of Filter that is evaluated against a message. The following types of
57
+ # filters are provided:
58
+ #
59
+ # SqlFilter - A type of Filter that is represented by SQL expression. For detailed information about SqlFilter
60
+ # syntax, see SqlFilter.SqlExpression Property.
61
+ #
62
+ # TrueFilter/FalseFiilter - A handy shortcut for always returning true or false. They are a type of SqlFilter.
63
+ #
64
+ # CorrelationFilter: A type of Filter that matches CorrelationId property of BrokeredMessage.
65
+ def filter
66
+ RuleAspect.from_hash(description['Filter'])
67
+ end
68
+
69
+ def filter=(val)
70
+ description['Filter'] = val.to_hash
71
+ end
72
+
73
+ # Action: String
74
+ #
75
+ # The Action property references an instance of FilterAction. The following type of FilterAction are provided.
76
+ # Default is an instance of EmptyRuleAction.
77
+ #
78
+ # SqlFilterAction - A type of FilterAction that is represented by SQL expression. For detailed information about
79
+ # SqlFilterAction syntax, see SqlRuleAction.SqlExpression Property.
80
+ #
81
+ # EmptyRuleAction - A type of FilterAction that represents an empty action.
82
+ def action
83
+ RuleAspect.from_hash(description['Action'])
84
+ end
85
+
86
+ def action=(val)
87
+ description['Action'] = val.to_hash
88
+ end
89
+
90
+ def ordered_props
91
+ [
92
+ 'Filter',
93
+ 'Action'
94
+ ]
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,34 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. 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
+ module Azure
16
+ module ServiceBus
17
+ class RuleAspect
18
+ def initialize()
19
+ yield self if block_given?
20
+ end
21
+
22
+ def to_hash(hash={})
23
+ hash[:type]=self.class.name.split('::').last
24
+ hash
25
+ end
26
+
27
+ def self.from_hash(hash)
28
+ hash = {} unless hash
29
+ type = hash[:type]
30
+ Azure::ServiceBus.const_get(type).new(hash) if type
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,161 @@
1
+ #-------------------------------------------------------------------------
2
+ # # Copyright (c) Microsoft and contributors. 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 'nokogiri'
16
+
17
+ require "azure/service_bus/queue"
18
+ require "azure/service_bus/topic"
19
+ require "azure/service_bus/subscription"
20
+ require "azure/service_bus/rule"
21
+ require "azure/service_bus/relay"
22
+
23
+ require "azure/service/enumeration_results"
24
+
25
+ module Azure
26
+ module ServiceBus
27
+ module Serialization
28
+ module ClassMethods
29
+
30
+ def rule_to_xml(xml, rule)
31
+ rule_aspect_to_xml xml, 'Filter', rule if rule.filter
32
+ rule_aspect_to_xml xml, 'Action', rule if rule.action
33
+ end
34
+
35
+ def rule_aspect_to_xml(xml, aspect_name, rule)
36
+ aspect = rule.description[aspect_name].dup
37
+ xml.send(aspect_name, "i:type" => aspect.delete(:type)) {
38
+ aspect.each { |k,v|
39
+ if k == :sql_expression
40
+ k = "SqlExpression"
41
+ elsif k == :compatibility_level
42
+ k = "CompatibilityLevel"
43
+ elsif k == :correlation_id
44
+ k = "CorrelationId"
45
+ end
46
+
47
+ xml.send(k, v)
48
+ }
49
+ }
50
+ end
51
+
52
+ def resource_to_xml(resource, entry)
53
+ doc = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
54
+ xml.entry(:xmlns => 'http://www.w3.org/2005/Atom') {
55
+ xml.content(:type => 'application/xml') {
56
+ xml.send("#{resource.to_s.capitalize}Description", 'xmlns' => 'http://schemas.microsoft.com/netservices/2010/10/servicebus/connect', 'xmlns:i' => 'http://www.w3.org/2001/XMLSchema-instance') {
57
+ if resource == :rule
58
+ rule_to_xml xml, entry
59
+ else
60
+ entry.get_props.each do |p|
61
+ xml.send(p[0], p[1].to_s)
62
+ end
63
+ end
64
+ }
65
+ }
66
+ }
67
+ end
68
+ doc.to_xml
69
+ end
70
+
71
+ def resource_from_xml(resource, node)
72
+ resource = resource.to_s.capitalize
73
+
74
+ name = (node % "title").text
75
+
76
+ Azure::ServiceBus.const_get(resource).new(name) do |r|
77
+ r.id = URI((node % "id").text) if (node % "id")
78
+ r.published = Time.parse((node % "published").text) if (node % "published")
79
+ r.updated = Time.parse((node % "updated").text) if (node % "updated")
80
+ r.author_name = (node % "author/name").text if (node % "author/name")
81
+
82
+ r.description = (node / "content/#{resource}Description *").each_with_object({}) do |element, description|
83
+ if resource == "Rule"
84
+ handle_rule_description_element element, description
85
+ else
86
+ description[element.name] = element.text
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ def handle_rule_description_element(element, description)
93
+ if element.name == "Filter" or element.name == "Action"
94
+ value = {}
95
+ value[:type] = element["type"]
96
+ element.children.each do |child|
97
+ if child.name == "SqlExpression"
98
+ value[:sql_expression] = child.content
99
+ elsif child.name == "CompatibilityLevel"
100
+ value[:compatibility_level] = child.content
101
+ elsif child.name == "CorrelationId"
102
+ value[:correlation_id] = child.content
103
+ end
104
+ end
105
+ description[element.name] = value
106
+ end
107
+ end
108
+
109
+ def resources_from_xml(resource, xml)
110
+ feed = Nokogiri::XML(xml).remove_namespaces!
111
+ values = (feed / 'entry').map {|node| resource_from_xml(resource, node) }
112
+ values.class.module_eval { attr_accessor :next_link}
113
+ values.next_link = feed.xpath("//link[@rel='next']/@href")
114
+ values
115
+ end
116
+
117
+ def resources_from_xml_with_next_link(resource, xml)
118
+ feed = Nokogiri::XML(xml).remove_namespaces!
119
+ values = Azure::Service::EnumerationResults.new((feed / 'entry').map {|node| resource_from_xml(resource, node) })
120
+
121
+ next_token = nil
122
+ next_uri = feed.xpath("//link[@rel='next']/@href")
123
+ if next_uri != nil && next_uri.length > 0
124
+ u = URI.parse(next_uri.to_s)
125
+ p = CGI.parse(u.query)
126
+
127
+ if p['skip'] || p['top']
128
+ next_token = { }
129
+ next_token[:top] = p['top'] if p['top']
130
+ next_token[:skip] = p['skip'] if p['skip']
131
+ end
132
+ end
133
+
134
+ values.continuation_token = next_token
135
+ values
136
+ end
137
+
138
+ def to_bool(s)
139
+ (s || "").downcase == 'true'
140
+ end
141
+
142
+ def slopify(xml)
143
+ node = (xml.is_a? String) ? Nokogiri.Slop(xml).root : xml
144
+ node.slop! if node.is_a? Nokogiri::XML::Document unless node.respond_to? :method_missing
145
+ node = node.root if node.is_a? Nokogiri::XML::Document
146
+ node
147
+ end
148
+
149
+ def expect_node(node_name, xml)
150
+ raise "Xml is not a #{node_name} node." unless xml.name == node_name
151
+ end
152
+ end
153
+
154
+ extend ClassMethods
155
+
156
+ def self.included( other )
157
+ other.extend( ClassMethods )
158
+ end
159
+ end
160
+ end
161
+ end