stuartpreston-azure-sdk-for-ruby 0.7.1 → 0.7.2
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 +4 -4
- data/.gitignore +11 -11
- data/.travis.yml +10 -10
- data/ChangeLog.txt +70 -68
- data/Gemfile +15 -15
- data/README.md +618 -618
- data/Rakefile +133 -133
- data/azure.gemspec +44 -44
- data/lib/azure.rb +52 -52
- data/lib/azure/base_management/affinity_group.rb +32 -32
- data/lib/azure/base_management/base_management_service.rb +304 -304
- data/lib/azure/base_management/location.rb +27 -27
- data/lib/azure/base_management/management_http_request.rb +171 -171
- data/lib/azure/base_management/serialization.rb +129 -129
- data/lib/azure/base_management/sql_management_http_request.rb +45 -45
- data/lib/azure/blob/blob.rb +31 -31
- data/lib/azure/blob/blob_service.rb +1423 -1423
- data/lib/azure/blob/block.rb +30 -30
- data/lib/azure/blob/container.rb +31 -31
- data/lib/azure/blob/serialization.rb +284 -284
- data/lib/azure/cloud_service_management/cloud_service.rb +38 -38
- data/lib/azure/cloud_service_management/cloud_service_management_service.rb +140 -140
- data/lib/azure/cloud_service_management/serialization.rb +117 -117
- data/lib/azure/core.rb +39 -39
- data/lib/azure/core/auth/authorizer.rb +36 -36
- data/lib/azure/core/auth/shared_key.rb +110 -110
- data/lib/azure/core/auth/shared_key_lite.rb +48 -48
- data/lib/azure/core/auth/signer.rb +48 -48
- data/lib/azure/core/configuration.rb +211 -211
- data/lib/azure/core/error.rb +22 -22
- data/lib/azure/core/filtered_service.rb +43 -43
- data/lib/azure/core/http/debug_filter.rb +35 -35
- data/lib/azure/core/http/http_error.rb +88 -88
- data/lib/azure/core/http/http_filter.rb +52 -52
- data/lib/azure/core/http/http_request.rb +157 -157
- data/lib/azure/core/http/http_response.rb +140 -140
- data/lib/azure/core/http/retry_policy.rb +73 -73
- data/lib/azure/core/http/signer_filter.rb +33 -33
- data/lib/azure/core/service.rb +62 -62
- data/lib/azure/core/signed_service.rb +42 -42
- data/lib/azure/core/utility.rb +190 -190
- data/lib/azure/queue/message.rb +29 -29
- data/lib/azure/queue/queue.rb +28 -28
- data/lib/azure/queue/queue_service.rb +567 -567
- data/lib/azure/queue/serialization.rb +106 -106
- data/lib/azure/service/access_policy.rb +25 -25
- data/lib/azure/service/cors.rb +11 -11
- data/lib/azure/service/cors_rule.rb +15 -15
- data/lib/azure/service/enumeration_results.rb +20 -20
- data/lib/azure/service/logging.rb +31 -31
- data/lib/azure/service/metrics.rb +30 -30
- data/lib/azure/service/retention_policy.rb +24 -24
- data/lib/azure/service/serialization.rb +297 -297
- data/lib/azure/service/signed_identifier.rb +29 -29
- data/lib/azure/service/storage_service.rb +82 -82
- data/lib/azure/service/storage_service_properties.rb +37 -37
- data/lib/azure/service_bus/action.rb +21 -21
- data/lib/azure/service_bus/auth/wrap_service.rb +88 -88
- data/lib/azure/service_bus/auth/wrap_signer.rb +68 -68
- data/lib/azure/service_bus/brokered_message.rb +123 -123
- data/lib/azure/service_bus/brokered_message_serializer.rb +159 -159
- data/lib/azure/service_bus/correlation_filter.rb +45 -45
- data/lib/azure/service_bus/empty_rule_action.rb +29 -29
- data/lib/azure/service_bus/false_filter.rb +38 -38
- data/lib/azure/service_bus/filter.rb +21 -21
- data/lib/azure/service_bus/interval.rb +103 -103
- data/lib/azure/service_bus/queue.rb +229 -229
- data/lib/azure/service_bus/relay.rb +87 -87
- data/lib/azure/service_bus/resource.rb +108 -108
- data/lib/azure/service_bus/rule.rb +97 -97
- data/lib/azure/service_bus/rule_aspect.rb +34 -34
- data/lib/azure/service_bus/serialization.rb +161 -161
- data/lib/azure/service_bus/service_bus_service.rb +896 -896
- data/lib/azure/service_bus/sql_filter.rb +50 -50
- data/lib/azure/service_bus/sql_rule_action.rb +50 -50
- data/lib/azure/service_bus/subscription.rb +183 -183
- data/lib/azure/service_bus/topic.rb +186 -186
- data/lib/azure/service_bus/true_filter.rb +38 -38
- data/lib/azure/sql_database_management/serialization.rb +111 -111
- data/lib/azure/sql_database_management/sql_database.rb +31 -31
- data/lib/azure/sql_database_management/sql_database_management_service.rb +200 -200
- data/lib/azure/storage_management/serialization.rb +184 -184
- data/lib/azure/storage_management/storage_account.rb +40 -40
- data/lib/azure/storage_management/storage_management_service.rb +166 -166
- data/lib/azure/table/auth/shared_key.rb +92 -92
- data/lib/azure/table/auth/shared_key_lite.rb +44 -44
- data/lib/azure/table/batch.rb +329 -329
- data/lib/azure/table/batch_response.rb +118 -118
- data/lib/azure/table/edmtype.rb +126 -126
- data/lib/azure/table/entity.rb +30 -30
- data/lib/azure/table/guid.rb +23 -23
- data/lib/azure/table/query.rb +111 -111
- data/lib/azure/table/serialization.rb +107 -107
- data/lib/azure/table/table_service.rb +559 -559
- data/lib/azure/version.rb +31 -31
- data/lib/azure/virtual_machine_image_management/serialization.rb +66 -66
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +25 -25
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +94 -94
- data/lib/azure/virtual_machine_management/serialization.rb +462 -462
- data/lib/azure/virtual_machine_management/virtual_machine.rb +45 -45
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +588 -588
- data/lib/azure/virtual_network_management/serialization.rb +190 -190
- data/lib/azure/virtual_network_management/virtual_network.rb +37 -37
- data/lib/azure/virtual_network_management/virtual_network_management_service.rb +109 -109
- data/test/fixtures/affinity_group.xml +33 -33
- data/test/fixtures/all_containers.xml +20 -20
- data/test/fixtures/all_tables.xml +22 -22
- data/test/fixtures/certificate.pem +21 -21
- data/test/fixtures/container_acl.xml +11 -11
- data/test/fixtures/create_sql_database_server.xml +1 -1
- data/test/fixtures/create_storage_desc_error.xml +5 -5
- data/test/fixtures/create_storage_extendedprop_error.xml +8 -8
- data/test/fixtures/create_storage_extendedpropname_error.xml +6 -6
- data/test/fixtures/create_storage_full_error.xml +6 -6
- data/test/fixtures/create_storage_label_error.xml +5 -5
- data/test/fixtures/create_storage_location_error.xml +5 -5
- data/test/fixtures/create_storage_name_error.xml +6 -6
- data/test/fixtures/create_table_response_entry.xml +15 -15
- data/test/fixtures/delete_storage_container_error.xml +5 -5
- data/test/fixtures/delete_storage_error.xml +5 -5
- data/test/fixtures/deployment_error.xml +5 -5
- data/test/fixtures/get_storage_account_error.xml +5 -5
- data/test/fixtures/get_storage_account_properties.xml +31 -31
- data/test/fixtures/get_storage_account_properties_new.xml +31 -31
- data/test/fixtures/http_error.xml +5 -5
- data/test/fixtures/insert_entity_response_entry.xml +25 -25
- data/test/fixtures/list_affinity_groups.xml +22 -22
- data/test/fixtures/list_blobs.xml +120 -120
- data/test/fixtures/list_block_all_with_none_committed.xml +21 -21
- data/test/fixtures/list_blocks_all.xml +22 -22
- data/test/fixtures/list_blocks_committed.xml +12 -12
- data/test/fixtures/list_cloud_services.xml +38 -38
- data/test/fixtures/list_containers.xml +37 -37
- data/test/fixtures/list_firewall_management_endpoint.xml +27 -27
- data/test/fixtures/list_images.xml +110 -110
- data/test/fixtures/list_locations.xml +62 -62
- data/test/fixtures/list_page_ranges.xml +10 -10
- data/test/fixtures/list_sql_database.xml +36 -36
- data/test/fixtures/list_sql_server_firewall.xml +23 -23
- data/test/fixtures/list_storage_account_single.xml +24 -24
- data/test/fixtures/list_storage_accounts.xml +45 -45
- data/test/fixtures/list_virtual_networks.xml +92 -92
- data/test/fixtures/logging.xml +11 -11
- data/test/fixtures/management_certificate.pem +55 -55
- data/test/fixtures/messages.xml +12 -12
- data/test/fixtures/metrics.xml +10 -10
- data/test/fixtures/privatekey.key +28 -28
- data/test/fixtures/query_entities_empty_response.xml +7 -7
- data/test/fixtures/query_entities_response.xml +45 -45
- data/test/fixtures/queue_service_properties.xml +22 -22
- data/test/fixtures/queue_service_properties_original.xml +19 -19
- data/test/fixtures/queues.xml +16 -16
- data/test/fixtures/retention_policy.xml +5 -5
- data/test/fixtures/sb_default_create_queue_response.xml +23 -23
- data/test/fixtures/sb_default_create_relay_response.xml +15 -15
- data/test/fixtures/sb_default_create_topic_response.xml +18 -18
- data/test/fixtures/sb_get_access_token_response.txt +1 -1
- data/test/fixtures/sb_queues_runtime_peek_message_response_headers.txt +9 -9
- data/test/fixtures/storage_service_properties.xml +54 -54
- data/test/fixtures/update_storage_account.xml +16 -16
- data/test/fixtures/update_storage_error.xml +4 -4
- data/test/fixtures/updated_storage_accounts.xml +52 -52
- data/test/fixtures/virtual_machine.xml +113 -113
- data/test/fixtures/windows_virtual_machine.xml +106 -106
- data/test/integration/affinity_group/Affinity_test.rb +55 -55
- data/test/integration/affinity_group/Create_Affinity_test.rb +63 -63
- data/test/integration/affinity_group/Delete_Affinity_test.rb +56 -56
- data/test/integration/affinity_group/List_Affinity_test.rb +41 -41
- data/test/integration/affinity_group/Update_Affinity_test.rb +82 -82
- data/test/integration/blob/blob_gb18030_test.rb +199 -199
- data/test/integration/blob/blob_metadata_test.rb +75 -75
- data/test/integration/blob/blob_pages_test.rb +119 -119
- data/test/integration/blob/blob_properties_test.rb +77 -77
- data/test/integration/blob/block_blob_test.rb +254 -254
- data/test/integration/blob/container/container_acl_test.rb +69 -69
- data/test/integration/blob/container/container_metadata_test.rb +50 -50
- data/test/integration/blob/container/create_container_test.rb +60 -60
- data/test/integration/blob/container/delete_container_test.rb +39 -39
- data/test/integration/blob/container/get_container_properties_test.rb +48 -48
- data/test/integration/blob/container/list_containers_test.rb +79 -79
- data/test/integration/blob/container/root_container_test.rb +53 -53
- data/test/integration/blob/copy_blob_test.rb +113 -113
- data/test/integration/blob/create_blob_snapshot_test.rb +80 -80
- data/test/integration/blob/create_page_blob_test.rb +83 -83
- data/test/integration/blob/delete_blob_test.rb +159 -159
- data/test/integration/blob/get_blob_test.rb +65 -65
- data/test/integration/blob/informative_errors_test.rb +38 -38
- data/test/integration/blob/lease/acquire_lease_test.rb +36 -36
- data/test/integration/blob/lease/break_lease_test.rb +40 -40
- data/test/integration/blob/lease/release_lease_test.rb +40 -40
- data/test/integration/blob/lease/renew_lease_test.rb +42 -42
- data/test/integration/blob/list_blobs_test.rb +113 -113
- data/test/integration/cloud_service/Cloud_Create_test.rb +44 -44
- data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -44
- data/test/integration/database/create_sql_server_firewall_test.rb +86 -86
- data/test/integration/database/create_sql_server_test.rb +53 -53
- data/test/integration/database/delete_sql_server_firewall_test.rb +70 -70
- data/test/integration/database/delete_sql_server_test.rb +58 -58
- data/test/integration/database/list_sql_server_firewall_test.rb +45 -45
- data/test/integration/database/list_sql_servers_test.rb +44 -44
- data/test/integration/database/reset_password_sql_server_test.rb +55 -55
- data/test/integration/location/Location_List_test.rb +39 -39
- data/test/integration/queue/clear_messages_test.rb +42 -42
- data/test/integration/queue/create_message_test.rb +75 -75
- data/test/integration/queue/create_queue_test.rb +50 -50
- data/test/integration/queue/delete_message_test.rb +67 -67
- data/test/integration/queue/delete_queue_test.rb +45 -45
- data/test/integration/queue/informative_errors_test.rb +41 -41
- data/test/integration/queue/list_messages_encoded_test.rb +79 -79
- data/test/integration/queue/list_messages_test.rb +79 -79
- data/test/integration/queue/list_queues_test.rb +44 -44
- data/test/integration/queue/peek_messages_test.rb +59 -59
- data/test/integration/queue/queue_gb18030_test.rb +131 -131
- data/test/integration/queue/queue_metadata_test.rb +40 -40
- data/test/integration/queue/update_message_test.rb +74 -74
- data/test/integration/service_bus/informative_errors_test.rb +36 -36
- data/test/integration/service_bus/queues_scenario_test.rb +200 -200
- data/test/integration/service_bus/queues_test.rb +265 -265
- data/test/integration/service_bus/relay_test.rb +131 -131
- data/test/integration/service_bus/rules_test.rb +144 -144
- data/test/integration/service_bus/sb_queue_gb18030_test.rb +182 -182
- data/test/integration/service_bus/scenario_test.rb +101 -101
- data/test/integration/service_bus/subscriptions_test.rb +211 -211
- data/test/integration/service_bus/topics_scenario_test.rb +406 -406
- data/test/integration/service_bus/topics_test.rb +129 -129
- data/test/integration/storage_management/storage_management_test.rb +160 -160
- data/test/integration/table/create_table_test.rb +35 -35
- data/test/integration/table/delete_entity_batch_test.rb +106 -106
- data/test/integration/table/delete_entity_test.rb +93 -93
- data/test/integration/table/delete_table_test.rb +39 -39
- data/test/integration/table/get_table_test.rb +36 -36
- data/test/integration/table/informative_errors_test.rb +38 -38
- data/test/integration/table/insert_entity_batch_test.rb +99 -99
- data/test/integration/table/insert_entity_test.rb +87 -87
- data/test/integration/table/insert_or_merge_entity_batch_test.rb +158 -158
- data/test/integration/table/insert_or_merge_entity_test.rb +142 -142
- data/test/integration/table/insert_or_replace_entity_batch_test.rb +151 -151
- data/test/integration/table/insert_or_replace_entity_test.rb +136 -136
- data/test/integration/table/merge_entity_batch_test.rb +127 -127
- data/test/integration/table/merge_entity_test.rb +112 -112
- data/test/integration/table/query_entities_test.rb +194 -194
- data/test/integration/table/query_tables_test.rb +42 -42
- data/test/integration/table/query_test.rb +250 -250
- data/test/integration/table/table_acl_test.rb +51 -51
- data/test/integration/table/table_gb18030_test.rb +355 -355
- data/test/integration/table/update_entity_batch_test.rb +148 -148
- data/test/integration/table/update_entity_test.rb +130 -130
- data/test/integration/test_helper.rb +42 -42
- data/test/integration/vm/VM_Create_test.rb +260 -260
- data/test/integration/vm/VM_Delete_test.rb +55 -55
- data/test/integration/vm/VM_Operations_test.rb +173 -173
- data/test/integration/vm_image/virtual_machine_disk_test.rb +37 -37
- data/test/integration/vm_image/virtual_machine_image_test.rb +36 -36
- data/test/integration/vnet/Virtual_Network_Create_test.rb +122 -122
- data/test/integration/vnet/Virtual_Network_list_test.rb +53 -53
- data/test/support/env.rb +19 -19
- data/test/support/fixtures.rb +36 -36
- data/test/support/name_generator.rb +168 -168
- data/test/support/stubs.rb +42 -42
- data/test/support/virtual_machine_name_generator.rb +102 -102
- data/test/support/virtual_network_helper.rb +73 -73
- data/test/test_helper.rb +53 -53
- data/test/unit/affinity_group/affinity_group_test.rb +192 -192
- data/test/unit/affinity_group/serialization_test.rb +88 -88
- data/test/unit/base_management/location_test.rb +57 -57
- data/test/unit/blob/blob_service_test.rb +1946 -1946
- data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +94 -94
- data/test/unit/cloud_service_management/serialization_test.rb +169 -169
- data/test/unit/core/auth/shared_key_lite_test.rb +51 -51
- data/test/unit/core/auth/shared_key_test.rb +58 -58
- data/test/unit/core/auth/signer_test.rb +30 -30
- data/test/unit/core/http/http_error_test.rb +57 -57
- data/test/unit/core/http/http_request_test.rb +66 -66
- data/test/unit/core/http/http_response_test.rb +45 -45
- data/test/unit/core/http/retry_policy_test.rb +23 -23
- data/test/unit/database/serialization_test.rb +97 -97
- data/test/unit/database/sql_database_server_service_test.rb +288 -288
- data/test/unit/service/serialization_test.rb +532 -532
- data/test/unit/service/storage_service_test.rb +292 -292
- data/test/unit/storage_management/serialization_test.rb +232 -232
- data/test/unit/storage_management/storage_management_service_test.rb +261 -261
- data/test/unit/table/edmtype_test.rb +107 -107
- data/test/unit/virtual_machine_image_management/serialization_test.rb +35 -35
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +65 -65
- data/test/unit/virtual_machine_management/serialization_test.rb +258 -258
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +440 -440
- data/test/unit/vnet/serialization_test.rb +187 -187
- data/test/unit/vnet/virtual_network_management_service_test.rb +131 -131
- metadata +34 -27
@@ -1,25 +1,25 @@
|
|
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 Service
|
17
|
-
class RetentionPolicy
|
18
|
-
def initialize
|
19
|
-
yield self if block_given?
|
20
|
-
end
|
21
|
-
attr_accessor :enabled
|
22
|
-
attr_accessor :days
|
23
|
-
end
|
24
|
-
end
|
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 Service
|
17
|
+
class RetentionPolicy
|
18
|
+
def initialize
|
19
|
+
yield self if block_given?
|
20
|
+
end
|
21
|
+
attr_accessor :enabled
|
22
|
+
attr_accessor :days
|
23
|
+
end
|
24
|
+
end
|
25
25
|
end
|
@@ -1,298 +1,298 @@
|
|
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/enumeration_results'
|
18
|
-
require 'azure/service/signed_identifier'
|
19
|
-
require 'azure/service/access_policy'
|
20
|
-
|
21
|
-
require 'azure/service/storage_service_properties'
|
22
|
-
require 'azure/service/logging'
|
23
|
-
require 'azure/service/metrics'
|
24
|
-
require 'azure/service/retention_policy'
|
25
|
-
require 'azure/service/cors'
|
26
|
-
require 'azure/service/cors_rule'
|
27
|
-
|
28
|
-
module Azure
|
29
|
-
module Service
|
30
|
-
module Serialization
|
31
|
-
module ClassMethods
|
32
|
-
|
33
|
-
def signed_identifiers_from_xml(xml)
|
34
|
-
xml = slopify(xml)
|
35
|
-
expect_node("SignedIdentifiers", xml)
|
36
|
-
|
37
|
-
identifiers = []
|
38
|
-
return identifiers unless (xml > "SignedIdentifier").any?
|
39
|
-
|
40
|
-
if xml.SignedIdentifier.count == 0
|
41
|
-
identifiers.push(signed_identifier_from_xml(xml.SignedIdentifier))
|
42
|
-
else
|
43
|
-
xml.SignedIdentifier.each { |identifier_node|
|
44
|
-
identifiers.push(signed_identifier_from_xml(identifier_node))
|
45
|
-
}
|
46
|
-
end
|
47
|
-
|
48
|
-
identifiers
|
49
|
-
end
|
50
|
-
|
51
|
-
def signed_identifiers_to_xml(signed_identifiers)
|
52
|
-
builder = Nokogiri::XML::Builder.new(:encoding=>"utf-8") do |xml|
|
53
|
-
xml.SignedIdentifiers {
|
54
|
-
signed_identifiers.each do |identifier|
|
55
|
-
xml.SignedIdentifier {
|
56
|
-
xml.Id identifier.id
|
57
|
-
xml.AccessPolicy {
|
58
|
-
xml.Start identifier.access_policy.start
|
59
|
-
xml.Expiry identifier.access_policy.expiry
|
60
|
-
xml.Permission identifier.access_policy.permission
|
61
|
-
}
|
62
|
-
}
|
63
|
-
end
|
64
|
-
}
|
65
|
-
end
|
66
|
-
builder.to_xml
|
67
|
-
end
|
68
|
-
|
69
|
-
def signed_identifier_from_xml(xml)
|
70
|
-
xml = slopify(xml)
|
71
|
-
expect_node("SignedIdentifier", xml)
|
72
|
-
|
73
|
-
SignedIdentifier.new do |identifier|
|
74
|
-
identifier.id = xml.Id.text if (xml > "Id").any?
|
75
|
-
identifier.access_policy = access_policy_from_xml(xml.AccessPolicy) if (xml > "AccessPolicy").any?
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def access_policy_from_xml(xml)
|
80
|
-
xml = slopify(xml)
|
81
|
-
expect_node("AccessPolicy", xml)
|
82
|
-
|
83
|
-
AccessPolicy.new do |policy|
|
84
|
-
policy.start = xml.Start.text if (xml > "Start").any?
|
85
|
-
policy.expiry = xml.Expiry.text if (xml > "Expiry").any?
|
86
|
-
policy.permission = xml.Permission.text if (xml > "Permission").any?
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def enumeration_results_from_xml(xml, results)
|
91
|
-
xml = slopify(xml)
|
92
|
-
expect_node("EnumerationResults", xml)
|
93
|
-
|
94
|
-
results = results || EnumerationResults.new;
|
95
|
-
|
96
|
-
results.continuation_token = xml.NextMarker.text if (xml > "NextMarker").any?
|
97
|
-
results
|
98
|
-
end
|
99
|
-
|
100
|
-
def metadata_from_xml(xml)
|
101
|
-
xml = slopify(xml)
|
102
|
-
expect_node("Metadata", xml)
|
103
|
-
|
104
|
-
metadata = {}
|
105
|
-
|
106
|
-
xml.children.each { |meta_node|
|
107
|
-
|
108
|
-
key = meta_node.name.downcase
|
109
|
-
if metadata.has_key? key
|
110
|
-
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
111
|
-
metadata[key].push(meta_node.text)
|
112
|
-
else
|
113
|
-
metadata[key] = meta_node.text
|
114
|
-
end
|
115
|
-
}
|
116
|
-
metadata
|
117
|
-
end
|
118
|
-
|
119
|
-
def metadata_from_headers(headers)
|
120
|
-
metadata = {}
|
121
|
-
|
122
|
-
headers.each { |k, v|
|
123
|
-
if key = k[/^x-ms-meta-(.*)/, 1]
|
124
|
-
if metadata.has_key? key
|
125
|
-
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
126
|
-
metadata[key].push(v)
|
127
|
-
else
|
128
|
-
metadata[key] = v
|
129
|
-
end
|
130
|
-
end
|
131
|
-
}
|
132
|
-
|
133
|
-
metadata
|
134
|
-
end
|
135
|
-
|
136
|
-
def retention_policy_to_xml(retention_policy, xml)
|
137
|
-
xml.RetentionPolicy {
|
138
|
-
xml.Enabled retention_policy.enabled unless retention_policy.enabled == nil
|
139
|
-
xml.Days retention_policy.days if retention_policy.days
|
140
|
-
}
|
141
|
-
end
|
142
|
-
|
143
|
-
def retention_policy_from_xml(xml)
|
144
|
-
xml = slopify(xml)
|
145
|
-
expect_node("RetentionPolicy", xml)
|
146
|
-
|
147
|
-
RetentionPolicy.new do |policy|
|
148
|
-
policy.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
149
|
-
policy.days = xml.Days.text.to_i if (xml > "Days").any?
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def metrics_to_xml_children(metrics, xml)
|
154
|
-
xml.Version metrics.version if metrics.version
|
155
|
-
xml.Enabled metrics.enabled unless metrics.enabled == nil
|
156
|
-
xml.IncludeAPIs metrics.include_apis unless metrics.include_apis == nil
|
157
|
-
retention_policy_to_xml(metrics.retention_policy, xml) if metrics.retention_policy
|
158
|
-
end
|
159
|
-
|
160
|
-
def hour_metrics_to_xml(metrics, xml)
|
161
|
-
xml.HourMetrics {
|
162
|
-
metrics_to_xml_children(metrics, xml)
|
163
|
-
}
|
164
|
-
end
|
165
|
-
|
166
|
-
def minute_metrics_to_xml(metrics, xml)
|
167
|
-
xml.MinuteMetrics {
|
168
|
-
metrics_to_xml_children(metrics, xml)
|
169
|
-
}
|
170
|
-
end
|
171
|
-
|
172
|
-
def metrics_from_xml(xml)
|
173
|
-
xml = slopify(xml)
|
174
|
-
|
175
|
-
Metrics.new do |metrics|
|
176
|
-
metrics.version = xml.Version.text if (xml > "Version").any?
|
177
|
-
metrics.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
178
|
-
metrics.include_apis = to_bool(xml.IncludeAPIs.text) if (xml > "IncludeAPIs").any?
|
179
|
-
metrics.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
def logging_to_xml(logging, xml)
|
184
|
-
xml.Logging {
|
185
|
-
xml.Version logging.version if logging.version
|
186
|
-
xml.Delete logging.delete unless logging.delete == nil
|
187
|
-
xml.Read logging.read unless logging.read == nil
|
188
|
-
xml.Write logging.write unless logging.write == nil
|
189
|
-
retention_policy_to_xml(logging.retention_policy, xml) if logging.retention_policy
|
190
|
-
}
|
191
|
-
end
|
192
|
-
|
193
|
-
def logging_from_xml(xml)
|
194
|
-
xml = slopify(xml)
|
195
|
-
expect_node("Logging", xml)
|
196
|
-
|
197
|
-
Logging.new do |logging|
|
198
|
-
logging.version = xml.Version.text if (xml > "Version").any?
|
199
|
-
logging.delete = to_bool(xml.Delete.text) if (xml > "Delete").any?
|
200
|
-
logging.read = to_bool(xml.Read.text) if (xml > "Read").any?
|
201
|
-
logging.write = to_bool(xml.Write.text) if (xml > "Write").any?
|
202
|
-
logging.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def cors_to_xml(cors, xml)
|
207
|
-
xml.Cors {
|
208
|
-
cors.cors_rules.to_a.each do |cors_rule|
|
209
|
-
cors_rule_to_xml(cors_rule, xml)
|
210
|
-
end
|
211
|
-
}
|
212
|
-
end
|
213
|
-
|
214
|
-
def cors_rule_to_xml(cors_rule, xml)
|
215
|
-
xml.CorsRule {
|
216
|
-
xml.AllowedOrigins cors_rule.allowed_origins.join(",") if cors_rule.allowed_origins
|
217
|
-
xml.AllowedMethods cors_rule.allowed_methods.join(",") if cors_rule.allowed_methods
|
218
|
-
xml.MaxAgeInSeconds cors_rule.max_age_in_seconds if cors_rule.max_age_in_seconds
|
219
|
-
xml.ExposedHeaders cors_rule.exposed_headers.join(",") if cors_rule.exposed_headers
|
220
|
-
xml.AllowedHeaders cors_rule.allowed_headers.join(",") if cors_rule.allowed_headers
|
221
|
-
}
|
222
|
-
end
|
223
|
-
|
224
|
-
def cors_from_xml(xml)
|
225
|
-
xml = slopify(xml)
|
226
|
-
expect_node("Cors", xml)
|
227
|
-
|
228
|
-
Cors.new do |cors|
|
229
|
-
cors.cors_rules = xml.children.to_a.map {|child| cors_rule_from_xml(child)}
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
def cors_rule_from_xml(xml)
|
234
|
-
xml = slopify(xml)
|
235
|
-
expect_node("CorsRule", xml)
|
236
|
-
|
237
|
-
CorsRule.new do |cors_rule|
|
238
|
-
cors_rule.allowed_origins = ary_from_node(xml.AllowedOrigins) if (xml > "AllowedOrigins").any?
|
239
|
-
cors_rule.allowed_methods = ary_from_node(xml.AllowedMethods) if (xml > "AllowedMethods").any?
|
240
|
-
cors_rule.max_age_in_seconds = xml.MaxAgeInSeconds.text.to_i if (xml > "MaxAgeInSeconds").any?
|
241
|
-
cors_rule.exposed_headers = ary_from_node(xml.ExposedHeaders) if (xml > "ExposedHeaders").any?
|
242
|
-
cors_rule.allowed_headers = ary_from_node(xml.AllowedHeaders) if (xml > "AllowedHeaders").any?
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
def ary_from_node(node)
|
247
|
-
node.text.split(",").map {|s| s.strip}
|
248
|
-
end
|
249
|
-
|
250
|
-
def service_properties_to_xml(properties)
|
251
|
-
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
|
252
|
-
xml.StorageServiceProperties {
|
253
|
-
logging_to_xml(properties.logging, xml) if properties.logging
|
254
|
-
hour_metrics_to_xml(properties.hour_metrics, xml) if properties.hour_metrics
|
255
|
-
minute_metrics_to_xml(properties.minute_metrics, xml) if properties.minute_metrics
|
256
|
-
cors_to_xml(properties.cors, xml) if properties.cors
|
257
|
-
}
|
258
|
-
end
|
259
|
-
builder.to_xml
|
260
|
-
end
|
261
|
-
|
262
|
-
def service_properties_from_xml(xml)
|
263
|
-
xml = slopify(xml)
|
264
|
-
expect_node("StorageServiceProperties", xml)
|
265
|
-
|
266
|
-
StorageServiceProperties.new do |props|
|
267
|
-
props.default_service_version = xml.DefaultServiceVersion.text if (xml > "DefaultServiceVersion").any?
|
268
|
-
props.logging = logging_from_xml(xml.Logging)
|
269
|
-
props.hour_metrics = metrics_from_xml(xml.HourMetrics)
|
270
|
-
props.minute_metrics = metrics_from_xml(xml.MinuteMetrics)
|
271
|
-
props.cors = cors_from_xml(xml.Cors)
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
def to_bool(s)
|
276
|
-
(s || "").downcase == 'true'
|
277
|
-
end
|
278
|
-
|
279
|
-
def slopify(xml)
|
280
|
-
node = (xml.is_a? String) ? Nokogiri.Slop(xml).root : xml
|
281
|
-
node.slop! if node.is_a? Nokogiri::XML::Document unless node.respond_to? :method_missing
|
282
|
-
node = node.root if node.is_a? Nokogiri::XML::Document
|
283
|
-
node
|
284
|
-
end
|
285
|
-
|
286
|
-
def expect_node(node_name, xml)
|
287
|
-
raise "Xml is not a #{node_name} node." unless xml.name == node_name
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
extend ClassMethods
|
292
|
-
|
293
|
-
def self.included( other )
|
294
|
-
other.extend( ClassMethods )
|
295
|
-
end
|
296
|
-
end
|
297
|
-
end
|
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/enumeration_results'
|
18
|
+
require 'azure/service/signed_identifier'
|
19
|
+
require 'azure/service/access_policy'
|
20
|
+
|
21
|
+
require 'azure/service/storage_service_properties'
|
22
|
+
require 'azure/service/logging'
|
23
|
+
require 'azure/service/metrics'
|
24
|
+
require 'azure/service/retention_policy'
|
25
|
+
require 'azure/service/cors'
|
26
|
+
require 'azure/service/cors_rule'
|
27
|
+
|
28
|
+
module Azure
|
29
|
+
module Service
|
30
|
+
module Serialization
|
31
|
+
module ClassMethods
|
32
|
+
|
33
|
+
def signed_identifiers_from_xml(xml)
|
34
|
+
xml = slopify(xml)
|
35
|
+
expect_node("SignedIdentifiers", xml)
|
36
|
+
|
37
|
+
identifiers = []
|
38
|
+
return identifiers unless (xml > "SignedIdentifier").any?
|
39
|
+
|
40
|
+
if xml.SignedIdentifier.count == 0
|
41
|
+
identifiers.push(signed_identifier_from_xml(xml.SignedIdentifier))
|
42
|
+
else
|
43
|
+
xml.SignedIdentifier.each { |identifier_node|
|
44
|
+
identifiers.push(signed_identifier_from_xml(identifier_node))
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
identifiers
|
49
|
+
end
|
50
|
+
|
51
|
+
def signed_identifiers_to_xml(signed_identifiers)
|
52
|
+
builder = Nokogiri::XML::Builder.new(:encoding=>"utf-8") do |xml|
|
53
|
+
xml.SignedIdentifiers {
|
54
|
+
signed_identifiers.each do |identifier|
|
55
|
+
xml.SignedIdentifier {
|
56
|
+
xml.Id identifier.id
|
57
|
+
xml.AccessPolicy {
|
58
|
+
xml.Start identifier.access_policy.start
|
59
|
+
xml.Expiry identifier.access_policy.expiry
|
60
|
+
xml.Permission identifier.access_policy.permission
|
61
|
+
}
|
62
|
+
}
|
63
|
+
end
|
64
|
+
}
|
65
|
+
end
|
66
|
+
builder.to_xml
|
67
|
+
end
|
68
|
+
|
69
|
+
def signed_identifier_from_xml(xml)
|
70
|
+
xml = slopify(xml)
|
71
|
+
expect_node("SignedIdentifier", xml)
|
72
|
+
|
73
|
+
SignedIdentifier.new do |identifier|
|
74
|
+
identifier.id = xml.Id.text if (xml > "Id").any?
|
75
|
+
identifier.access_policy = access_policy_from_xml(xml.AccessPolicy) if (xml > "AccessPolicy").any?
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def access_policy_from_xml(xml)
|
80
|
+
xml = slopify(xml)
|
81
|
+
expect_node("AccessPolicy", xml)
|
82
|
+
|
83
|
+
AccessPolicy.new do |policy|
|
84
|
+
policy.start = xml.Start.text if (xml > "Start").any?
|
85
|
+
policy.expiry = xml.Expiry.text if (xml > "Expiry").any?
|
86
|
+
policy.permission = xml.Permission.text if (xml > "Permission").any?
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def enumeration_results_from_xml(xml, results)
|
91
|
+
xml = slopify(xml)
|
92
|
+
expect_node("EnumerationResults", xml)
|
93
|
+
|
94
|
+
results = results || EnumerationResults.new;
|
95
|
+
|
96
|
+
results.continuation_token = xml.NextMarker.text if (xml > "NextMarker").any?
|
97
|
+
results
|
98
|
+
end
|
99
|
+
|
100
|
+
def metadata_from_xml(xml)
|
101
|
+
xml = slopify(xml)
|
102
|
+
expect_node("Metadata", xml)
|
103
|
+
|
104
|
+
metadata = {}
|
105
|
+
|
106
|
+
xml.children.each { |meta_node|
|
107
|
+
|
108
|
+
key = meta_node.name.downcase
|
109
|
+
if metadata.has_key? key
|
110
|
+
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
111
|
+
metadata[key].push(meta_node.text)
|
112
|
+
else
|
113
|
+
metadata[key] = meta_node.text
|
114
|
+
end
|
115
|
+
}
|
116
|
+
metadata
|
117
|
+
end
|
118
|
+
|
119
|
+
def metadata_from_headers(headers)
|
120
|
+
metadata = {}
|
121
|
+
|
122
|
+
headers.each { |k, v|
|
123
|
+
if key = k[/^x-ms-meta-(.*)/, 1]
|
124
|
+
if metadata.has_key? key
|
125
|
+
metadata[key] = [metadata[key]] unless metadata[key].respond_to? :push
|
126
|
+
metadata[key].push(v)
|
127
|
+
else
|
128
|
+
metadata[key] = v
|
129
|
+
end
|
130
|
+
end
|
131
|
+
}
|
132
|
+
|
133
|
+
metadata
|
134
|
+
end
|
135
|
+
|
136
|
+
def retention_policy_to_xml(retention_policy, xml)
|
137
|
+
xml.RetentionPolicy {
|
138
|
+
xml.Enabled retention_policy.enabled unless retention_policy.enabled == nil
|
139
|
+
xml.Days retention_policy.days if retention_policy.days
|
140
|
+
}
|
141
|
+
end
|
142
|
+
|
143
|
+
def retention_policy_from_xml(xml)
|
144
|
+
xml = slopify(xml)
|
145
|
+
expect_node("RetentionPolicy", xml)
|
146
|
+
|
147
|
+
RetentionPolicy.new do |policy|
|
148
|
+
policy.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
149
|
+
policy.days = xml.Days.text.to_i if (xml > "Days").any?
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def metrics_to_xml_children(metrics, xml)
|
154
|
+
xml.Version metrics.version if metrics.version
|
155
|
+
xml.Enabled metrics.enabled unless metrics.enabled == nil
|
156
|
+
xml.IncludeAPIs metrics.include_apis unless metrics.include_apis == nil
|
157
|
+
retention_policy_to_xml(metrics.retention_policy, xml) if metrics.retention_policy
|
158
|
+
end
|
159
|
+
|
160
|
+
def hour_metrics_to_xml(metrics, xml)
|
161
|
+
xml.HourMetrics {
|
162
|
+
metrics_to_xml_children(metrics, xml)
|
163
|
+
}
|
164
|
+
end
|
165
|
+
|
166
|
+
def minute_metrics_to_xml(metrics, xml)
|
167
|
+
xml.MinuteMetrics {
|
168
|
+
metrics_to_xml_children(metrics, xml)
|
169
|
+
}
|
170
|
+
end
|
171
|
+
|
172
|
+
def metrics_from_xml(xml)
|
173
|
+
xml = slopify(xml)
|
174
|
+
|
175
|
+
Metrics.new do |metrics|
|
176
|
+
metrics.version = xml.Version.text if (xml > "Version").any?
|
177
|
+
metrics.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any?
|
178
|
+
metrics.include_apis = to_bool(xml.IncludeAPIs.text) if (xml > "IncludeAPIs").any?
|
179
|
+
metrics.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def logging_to_xml(logging, xml)
|
184
|
+
xml.Logging {
|
185
|
+
xml.Version logging.version if logging.version
|
186
|
+
xml.Delete logging.delete unless logging.delete == nil
|
187
|
+
xml.Read logging.read unless logging.read == nil
|
188
|
+
xml.Write logging.write unless logging.write == nil
|
189
|
+
retention_policy_to_xml(logging.retention_policy, xml) if logging.retention_policy
|
190
|
+
}
|
191
|
+
end
|
192
|
+
|
193
|
+
def logging_from_xml(xml)
|
194
|
+
xml = slopify(xml)
|
195
|
+
expect_node("Logging", xml)
|
196
|
+
|
197
|
+
Logging.new do |logging|
|
198
|
+
logging.version = xml.Version.text if (xml > "Version").any?
|
199
|
+
logging.delete = to_bool(xml.Delete.text) if (xml > "Delete").any?
|
200
|
+
logging.read = to_bool(xml.Read.text) if (xml > "Read").any?
|
201
|
+
logging.write = to_bool(xml.Write.text) if (xml > "Write").any?
|
202
|
+
logging.retention_policy = retention_policy_from_xml(xml.RetentionPolicy)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def cors_to_xml(cors, xml)
|
207
|
+
xml.Cors {
|
208
|
+
cors.cors_rules.to_a.each do |cors_rule|
|
209
|
+
cors_rule_to_xml(cors_rule, xml)
|
210
|
+
end
|
211
|
+
}
|
212
|
+
end
|
213
|
+
|
214
|
+
def cors_rule_to_xml(cors_rule, xml)
|
215
|
+
xml.CorsRule {
|
216
|
+
xml.AllowedOrigins cors_rule.allowed_origins.join(",") if cors_rule.allowed_origins
|
217
|
+
xml.AllowedMethods cors_rule.allowed_methods.join(",") if cors_rule.allowed_methods
|
218
|
+
xml.MaxAgeInSeconds cors_rule.max_age_in_seconds if cors_rule.max_age_in_seconds
|
219
|
+
xml.ExposedHeaders cors_rule.exposed_headers.join(",") if cors_rule.exposed_headers
|
220
|
+
xml.AllowedHeaders cors_rule.allowed_headers.join(",") if cors_rule.allowed_headers
|
221
|
+
}
|
222
|
+
end
|
223
|
+
|
224
|
+
def cors_from_xml(xml)
|
225
|
+
xml = slopify(xml)
|
226
|
+
expect_node("Cors", xml)
|
227
|
+
|
228
|
+
Cors.new do |cors|
|
229
|
+
cors.cors_rules = xml.children.to_a.map {|child| cors_rule_from_xml(child)}
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def cors_rule_from_xml(xml)
|
234
|
+
xml = slopify(xml)
|
235
|
+
expect_node("CorsRule", xml)
|
236
|
+
|
237
|
+
CorsRule.new do |cors_rule|
|
238
|
+
cors_rule.allowed_origins = ary_from_node(xml.AllowedOrigins) if (xml > "AllowedOrigins").any?
|
239
|
+
cors_rule.allowed_methods = ary_from_node(xml.AllowedMethods) if (xml > "AllowedMethods").any?
|
240
|
+
cors_rule.max_age_in_seconds = xml.MaxAgeInSeconds.text.to_i if (xml > "MaxAgeInSeconds").any?
|
241
|
+
cors_rule.exposed_headers = ary_from_node(xml.ExposedHeaders) if (xml > "ExposedHeaders").any?
|
242
|
+
cors_rule.allowed_headers = ary_from_node(xml.AllowedHeaders) if (xml > "AllowedHeaders").any?
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
def ary_from_node(node)
|
247
|
+
node.text.split(",").map {|s| s.strip}
|
248
|
+
end
|
249
|
+
|
250
|
+
def service_properties_to_xml(properties)
|
251
|
+
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
|
252
|
+
xml.StorageServiceProperties {
|
253
|
+
logging_to_xml(properties.logging, xml) if properties.logging
|
254
|
+
hour_metrics_to_xml(properties.hour_metrics, xml) if properties.hour_metrics
|
255
|
+
minute_metrics_to_xml(properties.minute_metrics, xml) if properties.minute_metrics
|
256
|
+
cors_to_xml(properties.cors, xml) if properties.cors
|
257
|
+
}
|
258
|
+
end
|
259
|
+
builder.to_xml
|
260
|
+
end
|
261
|
+
|
262
|
+
def service_properties_from_xml(xml)
|
263
|
+
xml = slopify(xml)
|
264
|
+
expect_node("StorageServiceProperties", xml)
|
265
|
+
|
266
|
+
StorageServiceProperties.new do |props|
|
267
|
+
props.default_service_version = xml.DefaultServiceVersion.text if (xml > "DefaultServiceVersion").any?
|
268
|
+
props.logging = logging_from_xml(xml.Logging)
|
269
|
+
props.hour_metrics = metrics_from_xml(xml.HourMetrics)
|
270
|
+
props.minute_metrics = metrics_from_xml(xml.MinuteMetrics)
|
271
|
+
props.cors = cors_from_xml(xml.Cors)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
def to_bool(s)
|
276
|
+
(s || "").downcase == 'true'
|
277
|
+
end
|
278
|
+
|
279
|
+
def slopify(xml)
|
280
|
+
node = (xml.is_a? String) ? Nokogiri.Slop(xml).root : xml
|
281
|
+
node.slop! if node.is_a? Nokogiri::XML::Document unless node.respond_to? :method_missing
|
282
|
+
node = node.root if node.is_a? Nokogiri::XML::Document
|
283
|
+
node
|
284
|
+
end
|
285
|
+
|
286
|
+
def expect_node(node_name, xml)
|
287
|
+
raise "Xml is not a #{node_name} node." unless xml.name == node_name
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
extend ClassMethods
|
292
|
+
|
293
|
+
def self.included( other )
|
294
|
+
other.extend( ClassMethods )
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
298
|
end
|