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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.travis.yml +10 -0
- data/ChangeLog.txt +40 -0
- data/Gemfile +16 -0
- data/README.md +616 -0
- data/Rakefile +133 -0
- data/azure.gemspec +44 -0
- data/lib/azure.rb +52 -0
- data/lib/azure/base_management/affinity_group.rb +32 -0
- data/lib/azure/base_management/base_management_service.rb +234 -0
- data/lib/azure/base_management/location.rb +27 -0
- data/lib/azure/base_management/management_http_request.rb +172 -0
- data/lib/azure/base_management/serialization.rb +129 -0
- data/lib/azure/base_management/sql_management_http_request.rb +45 -0
- data/lib/azure/blob/blob.rb +32 -0
- data/lib/azure/blob/blob_service.rb +1423 -0
- data/lib/azure/blob/block.rb +31 -0
- data/lib/azure/blob/container.rb +32 -0
- data/lib/azure/blob/serialization.rb +285 -0
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -0
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -0
- data/lib/azure/cloud_service_management/serialization.rb +117 -0
- data/lib/azure/core.rb +39 -0
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +110 -0
- data/lib/azure/core/auth/shared_key_lite.rb +48 -0
- data/lib/azure/core/auth/signer.rb +48 -0
- data/lib/azure/core/configuration.rb +211 -0
- data/lib/azure/core/error.rb +22 -0
- data/lib/azure/core/filtered_service.rb +44 -0
- data/lib/azure/core/http/debug_filter.rb +36 -0
- data/lib/azure/core/http/http_error.rb +88 -0
- data/lib/azure/core/http/http_filter.rb +53 -0
- data/lib/azure/core/http/http_request.rb +157 -0
- data/lib/azure/core/http/http_response.rb +140 -0
- data/lib/azure/core/http/retry_policy.rb +74 -0
- data/lib/azure/core/http/signer_filter.rb +34 -0
- data/lib/azure/core/service.rb +63 -0
- data/lib/azure/core/signed_service.rb +43 -0
- data/lib/azure/core/utility.rb +190 -0
- data/lib/azure/queue/message.rb +30 -0
- data/lib/azure/queue/queue.rb +29 -0
- data/lib/azure/queue/queue_service.rb +568 -0
- data/lib/azure/queue/serialization.rb +106 -0
- data/lib/azure/service/access_policy.rb +26 -0
- data/lib/azure/service/cors.rb +11 -0
- data/lib/azure/service/cors_rule.rb +15 -0
- data/lib/azure/service/enumeration_results.rb +21 -0
- data/lib/azure/service/logging.rb +32 -0
- data/lib/azure/service/metrics.rb +31 -0
- data/lib/azure/service/retention_policy.rb +25 -0
- data/lib/azure/service/serialization.rb +298 -0
- data/lib/azure/service/signed_identifier.rb +30 -0
- data/lib/azure/service/storage_service.rb +83 -0
- data/lib/azure/service/storage_service_properties.rb +37 -0
- data/lib/azure/service_bus/action.rb +21 -0
- data/lib/azure/service_bus/auth/wrap_service.rb +89 -0
- data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
- data/lib/azure/service_bus/brokered_message.rb +124 -0
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -0
- data/lib/azure/service_bus/correlation_filter.rb +45 -0
- data/lib/azure/service_bus/empty_rule_action.rb +30 -0
- data/lib/azure/service_bus/false_filter.rb +38 -0
- data/lib/azure/service_bus/filter.rb +21 -0
- data/lib/azure/service_bus/interval.rb +104 -0
- data/lib/azure/service_bus/queue.rb +230 -0
- data/lib/azure/service_bus/relay.rb +88 -0
- data/lib/azure/service_bus/resource.rb +109 -0
- data/lib/azure/service_bus/rule.rb +98 -0
- data/lib/azure/service_bus/rule_aspect.rb +34 -0
- data/lib/azure/service_bus/serialization.rb +161 -0
- data/lib/azure/service_bus/service_bus_service.rb +897 -0
- data/lib/azure/service_bus/sql_filter.rb +50 -0
- data/lib/azure/service_bus/sql_rule_action.rb +50 -0
- data/lib/azure/service_bus/subscription.rb +184 -0
- data/lib/azure/service_bus/topic.rb +187 -0
- data/lib/azure/service_bus/true_filter.rb +38 -0
- data/lib/azure/sql_database_management/serialization.rb +111 -0
- data/lib/azure/sql_database_management/sql_database.rb +31 -0
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -0
- data/lib/azure/storage_management/serialization.rb +184 -0
- data/lib/azure/storage_management/storage_account.rb +40 -0
- data/lib/azure/storage_management/storage_management_service.rb +166 -0
- data/lib/azure/table/auth/shared_key.rb +92 -0
- data/lib/azure/table/auth/shared_key_lite.rb +44 -0
- data/lib/azure/table/batch.rb +330 -0
- data/lib/azure/table/batch_response.rb +118 -0
- data/lib/azure/table/edmtype.rb +127 -0
- data/lib/azure/table/entity.rb +31 -0
- data/lib/azure/table/guid.rb +24 -0
- data/lib/azure/table/query.rb +112 -0
- data/lib/azure/table/serialization.rb +108 -0
- data/lib/azure/table/table_service.rb +560 -0
- data/lib/azure/version.rb +31 -0
- data/lib/azure/virtual_machine_image_management/serialization.rb +66 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -0
- data/lib/azure/virtual_machine_management/serialization.rb +463 -0
- data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -0
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +589 -0
- data/lib/azure/virtual_network_management/serialization.rb +186 -0
- data/lib/azure/virtual_network_management/virtual_network.rb +36 -0
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -0
- data/test/fixtures/32px-fulls-black.jpg +0 -0
- data/test/fixtures/affinity_group.xml +33 -0
- data/test/fixtures/all_containers.xml +20 -0
- data/test/fixtures/all_tables.xml +22 -0
- data/test/fixtures/certificate.pem +21 -0
- data/test/fixtures/container_acl.xml +11 -0
- data/test/fixtures/create_sql_database_server.xml +2 -0
- data/test/fixtures/create_storage_desc_error.xml +5 -0
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -0
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -0
- data/test/fixtures/create_storage_full_error.xml +6 -0
- data/test/fixtures/create_storage_label_error.xml +5 -0
- data/test/fixtures/create_storage_location_error.xml +5 -0
- data/test/fixtures/create_storage_name_error.xml +6 -0
- data/test/fixtures/create_table_response_entry.xml +15 -0
- data/test/fixtures/delete_storage_container_error.xml +5 -0
- data/test/fixtures/delete_storage_error.xml +5 -0
- data/test/fixtures/deployment_error.xml +5 -0
- data/test/fixtures/empty_xml_file +0 -0
- data/test/fixtures/get_storage_account_error.xml +5 -0
- data/test/fixtures/get_storage_account_properties.xml +32 -0
- data/test/fixtures/get_storage_account_properties_new.xml +32 -0
- data/test/fixtures/http_error.xml +5 -0
- data/test/fixtures/insert_entity_response_entry.xml +25 -0
- data/test/fixtures/list_affinity_groups.xml +22 -0
- data/test/fixtures/list_blobs.xml +121 -0
- data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
- data/test/fixtures/list_blocks_all.xml +23 -0
- data/test/fixtures/list_blocks_committed.xml +13 -0
- data/test/fixtures/list_cloud_services.xml +39 -0
- data/test/fixtures/list_containers.xml +38 -0
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -0
- data/test/fixtures/list_images.xml +110 -0
- data/test/fixtures/list_locations.xml +62 -0
- data/test/fixtures/list_page_ranges.xml +11 -0
- data/test/fixtures/list_sql_database.xml +36 -0
- data/test/fixtures/list_sql_server_firewall.xml +23 -0
- data/test/fixtures/list_storage_account_single.xml +25 -0
- data/test/fixtures/list_storage_accounts.xml +46 -0
- data/test/fixtures/list_virtual_networks.xml +92 -0
- data/test/fixtures/logging.xml +11 -0
- data/test/fixtures/management_certificate.pem +55 -0
- data/test/fixtures/messages.xml +12 -0
- data/test/fixtures/metrics.xml +10 -0
- data/test/fixtures/privatekey.key +28 -0
- data/test/fixtures/query_entities_empty_response.xml +7 -0
- data/test/fixtures/query_entities_response.xml +45 -0
- data/test/fixtures/queue_service_properties.xml +22 -0
- data/test/fixtures/queue_service_properties_original.xml +19 -0
- data/test/fixtures/queues.xml +16 -0
- data/test/fixtures/retention_policy.xml +5 -0
- data/test/fixtures/sb_default_create_queue_response.xml +23 -0
- data/test/fixtures/sb_default_create_relay_response.xml +15 -0
- data/test/fixtures/sb_default_create_topic_response.xml +18 -0
- data/test/fixtures/sb_get_access_token_response.txt +1 -0
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -0
- data/test/fixtures/storage_service_properties.xml +54 -0
- data/test/fixtures/update_storage_account.xml +16 -0
- data/test/fixtures/update_storage_error.xml +5 -0
- data/test/fixtures/updated_storage_accounts.xml +53 -0
- data/test/fixtures/virtual_machine.xml +113 -0
- data/test/fixtures/windows_virtual_machine.xml +106 -0
- data/test/integration/affinity_group/Affinity_test.rb +55 -0
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -0
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -0
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -0
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -0
- data/test/integration/blob/blob_gb18030_test.rb +199 -0
- data/test/integration/blob/blob_metadata_test.rb +75 -0
- data/test/integration/blob/blob_pages_test.rb +119 -0
- data/test/integration/blob/blob_properties_test.rb +77 -0
- data/test/integration/blob/block_blob_test.rb +254 -0
- data/test/integration/blob/container/container_acl_test.rb +69 -0
- data/test/integration/blob/container/container_metadata_test.rb +50 -0
- data/test/integration/blob/container/create_container_test.rb +60 -0
- data/test/integration/blob/container/delete_container_test.rb +39 -0
- data/test/integration/blob/container/get_container_properties_test.rb +48 -0
- data/test/integration/blob/container/list_containers_test.rb +79 -0
- data/test/integration/blob/container/root_container_test.rb +54 -0
- data/test/integration/blob/copy_blob_test.rb +113 -0
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
- data/test/integration/blob/create_page_blob_test.rb +83 -0
- data/test/integration/blob/delete_blob_test.rb +159 -0
- data/test/integration/blob/get_blob_test.rb +65 -0
- data/test/integration/blob/informative_errors_test.rb +39 -0
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
- data/test/integration/blob/lease/break_lease_test.rb +40 -0
- data/test/integration/blob/lease/release_lease_test.rb +40 -0
- data/test/integration/blob/lease/renew_lease_test.rb +42 -0
- data/test/integration/blob/list_blobs_test.rb +113 -0
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -0
- data/test/integration/database/create_sql_server_test.rb +53 -0
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -0
- data/test/integration/database/delete_sql_server_test.rb +58 -0
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -0
- data/test/integration/database/list_sql_servers_test.rb +44 -0
- data/test/integration/database/reset_password_sql_server_test.rb +55 -0
- data/test/integration/location/Location_List_test.rb +39 -0
- data/test/integration/queue/clear_messages_test.rb +42 -0
- data/test/integration/queue/create_message_test.rb +75 -0
- data/test/integration/queue/create_queue_test.rb +50 -0
- data/test/integration/queue/delete_message_test.rb +67 -0
- data/test/integration/queue/delete_queue_test.rb +45 -0
- data/test/integration/queue/informative_errors_test.rb +42 -0
- data/test/integration/queue/list_messages_encoded_test.rb +79 -0
- data/test/integration/queue/list_messages_test.rb +79 -0
- data/test/integration/queue/list_queues_test.rb +44 -0
- data/test/integration/queue/peek_messages_test.rb +59 -0
- data/test/integration/queue/queue_gb18030_test.rb +131 -0
- data/test/integration/queue/queue_metadata_test.rb +40 -0
- data/test/integration/queue/update_message_test.rb +74 -0
- data/test/integration/service_bus/informative_errors_test.rb +37 -0
- data/test/integration/service_bus/queues_scenario_test.rb +200 -0
- data/test/integration/service_bus/queues_test.rb +266 -0
- data/test/integration/service_bus/relay_test.rb +132 -0
- data/test/integration/service_bus/rules_test.rb +145 -0
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -0
- data/test/integration/service_bus/scenario_test.rb +101 -0
- data/test/integration/service_bus/subscriptions_test.rb +211 -0
- data/test/integration/service_bus/topics_scenario_test.rb +406 -0
- data/test/integration/service_bus/topics_test.rb +129 -0
- data/test/integration/storage_management/storage_management_test.rb +160 -0
- data/test/integration/table/create_table_test.rb +36 -0
- data/test/integration/table/delete_entity_batch_test.rb +107 -0
- data/test/integration/table/delete_entity_test.rb +94 -0
- data/test/integration/table/delete_table_test.rb +40 -0
- data/test/integration/table/get_table_test.rb +37 -0
- data/test/integration/table/informative_errors_test.rb +39 -0
- data/test/integration/table/insert_entity_batch_test.rb +100 -0
- data/test/integration/table/insert_entity_test.rb +88 -0
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
- data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
- data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
- data/test/integration/table/merge_entity_batch_test.rb +128 -0
- data/test/integration/table/merge_entity_test.rb +113 -0
- data/test/integration/table/query_entities_test.rb +195 -0
- data/test/integration/table/query_tables_test.rb +43 -0
- data/test/integration/table/query_test.rb +251 -0
- data/test/integration/table/table_acl_test.rb +52 -0
- data/test/integration/table/table_gb18030_test.rb +355 -0
- data/test/integration/table/update_entity_batch_test.rb +149 -0
- data/test/integration/table/update_entity_test.rb +131 -0
- data/test/integration/test_helper.rb +42 -0
- data/test/integration/vm/VM_Create_test.rb +260 -0
- data/test/integration/vm/VM_Delete_test.rb +55 -0
- data/test/integration/vm/VM_Operations_test.rb +173 -0
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -0
- data/test/integration/vm_image/virtual_machine_image_test.rb +37 -0
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -0
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -0
- data/test/support/env.rb +19 -0
- data/test/support/fixtures.rb +36 -0
- data/test/support/name_generator.rb +168 -0
- data/test/support/stubs.rb +42 -0
- data/test/support/virtual_machine_name_generator.rb +102 -0
- data/test/support/virtual_network_helper.rb +73 -0
- data/test/test_helper.rb +54 -0
- data/test/unit/affinity_group/affinity_group_test.rb +192 -0
- data/test/unit/affinity_group/serialization_test.rb +88 -0
- data/test/unit/base_management/location_test.rb +57 -0
- data/test/unit/blob/blob_service_test.rb +1947 -0
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -0
- data/test/unit/cloud_service_management/serialization_test.rb +169 -0
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
- data/test/unit/core/auth/shared_key_test.rb +58 -0
- data/test/unit/core/auth/signer_test.rb +30 -0
- data/test/unit/core/http/http_error_test.rb +57 -0
- data/test/unit/core/http/http_request_test.rb +66 -0
- data/test/unit/core/http/http_response_test.rb +45 -0
- data/test/unit/core/http/retry_policy_test.rb +23 -0
- data/test/unit/database/serialization_test.rb +97 -0
- data/test/unit/database/sql_database_server_service_test.rb +288 -0
- data/test/unit/service/serialization_test.rb +533 -0
- data/test/unit/service/storage_service_test.rb +293 -0
- data/test/unit/storage_management/serialization_test.rb +232 -0
- data/test/unit/storage_management/storage_management_service_test.rb +261 -0
- data/test/unit/table/edmtype_test.rb +108 -0
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -0
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -0
- data/test/unit/virtual_machine_management/serialization_test.rb +258 -0
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -0
- data/test/unit/vnet/serialization_test.rb +187 -0
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -0
- 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
|