azure 0.1.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/ChangeLog.txt +5 -0
- data/Gemfile +16 -3
- data/README.md +344 -2
- data/Rakefile +66 -37
- data/azure.gemspec +30 -11
- data/lib/azure.rb +35 -4
- 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/core.rb +32 -0
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +21 -6
- data/lib/azure/core/auth/shared_key_lite.rb +17 -3
- data/lib/azure/core/auth/signer.rb +48 -0
- data/lib/azure/core/configuration.rb +152 -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 +84 -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 +133 -0
- data/lib/azure/core/http/retry_policy.rb +68 -0
- data/lib/azure/core/http/signer_filter.rb +34 -0
- data/lib/azure/core/service.rb +38 -32
- data/lib/azure/core/signed_service.rb +43 -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 +103 -0
- data/lib/azure/service/access_policy.rb +26 -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 +240 -0
- data/lib/azure/service/signed_identifier.rb +30 -0
- data/lib/azure/service/storage_service.rb +79 -0
- data/lib/azure/service/storage_service_properties.rb +32 -0
- data/lib/azure/service_bus/action.rb +21 -0
- data/lib/azure/service_bus/auth/wrap_service.rb +59 -46
- data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
- data/lib/azure/service_bus/brokered_message.rb +36 -51
- data/lib/azure/service_bus/brokered_message_serializer.rb +48 -34
- 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/{core/utils → service_bus}/interval.rb +29 -22
- data/lib/azure/service_bus/queue.rb +230 -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 +160 -0
- data/lib/azure/service_bus/service_bus_service.rb +819 -12
- 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/{tables → table}/auth/shared_key.rb +33 -12
- 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 +117 -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 +105 -0
- data/lib/azure/table/table_service.rb +557 -0
- data/lib/azure/version.rb +31 -0
- data/test/fixtures/container_acl.xml +11 -0
- data/test/fixtures/{error.xml → http_error.xml} +0 -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_containers.xml +38 -0
- data/test/fixtures/list_page_ranges.xml +11 -0
- data/test/fixtures/logging.xml +11 -0
- data/test/fixtures/metrics.xml +10 -0
- data/test/fixtures/queues.xml +1 -1
- data/test/fixtures/retention_policy.xml +5 -0
- data/test/fixtures/storage_service_properties.xml +23 -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 +50 -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/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_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/rules_test.rb +145 -0
- data/test/integration/service_bus/scenario_test.rb +102 -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/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/update_entity_batch_test.rb +149 -0
- data/test/integration/table/update_entity_test.rb +131 -0
- data/test/integration/test_helper.rb +23 -9
- data/test/support/env.rb +15 -1
- data/test/support/fixtures.rb +14 -0
- data/test/support/name_generator.rb +74 -0
- data/test/support/stubs.rb +14 -0
- data/test/test_helper.rb +43 -3
- data/test/unit/blob/blob_service_test.rb +1947 -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/service/serialization_test.rb +502 -0
- data/test/unit/service/storage_service_test.rb +291 -0
- data/test/unit/table/edmtype_test.rb +108 -0
- metadata +231 -230
- data/Gemfile.lock +0 -36
- data/lib/azure/atom.rb +0 -170
- data/lib/azure/auth.rb +0 -29
- data/lib/azure/blobs.rb +0 -620
- data/lib/azure/blobs/blob.rb +0 -360
- data/lib/azure/blobs/container.rb +0 -209
- data/lib/azure/blobs/service.rb +0 -396
- data/lib/azure/blobs/shared_access_signature.rb +0 -84
- data/lib/azure/blobs/uri.rb +0 -60
- data/lib/azure/configuration.rb +0 -121
- data/lib/azure/core/collection.rb +0 -118
- data/lib/azure/core/signer.rb +0 -32
- data/lib/azure/core/utils/queryable.rb +0 -74
- data/lib/azure/core/utils/storage_service_properties.rb +0 -83
- data/lib/azure/core/utils/string.rb +0 -59
- data/lib/azure/error.rb +0 -72
- data/lib/azure/queues.rb +0 -272
- data/lib/azure/queues/message.rb +0 -174
- data/lib/azure/queues/queue.rb +0 -187
- data/lib/azure/queues/service.rb +0 -263
- data/lib/azure/queues/service_properties.rb +0 -152
- data/lib/azure/queues/uri.rb +0 -78
- data/lib/azure/request.rb +0 -102
- data/lib/azure/response.rb +0 -93
- data/lib/azure/service_bus.rb +0 -4
- data/lib/azure/service_bus/auth/authorizer.rb +0 -22
- data/lib/azure/service_bus/auth/uri.rb +0 -52
- data/lib/azure/service_bus/auth/wrap.rb +0 -37
- data/lib/azure/service_bus/auth/wrap_token.rb +0 -45
- data/lib/azure/service_bus/auth/wrap_token_manager.rb +0 -46
- data/lib/azure/service_bus/queues.rb +0 -194
- data/lib/azure/service_bus/queues/queue.rb +0 -100
- data/lib/azure/service_bus/queues/queue_serializer.rb +0 -51
- data/lib/azure/service_bus/queues/service.rb +0 -154
- data/lib/azure/service_bus/queues/uri.rb +0 -80
- data/lib/azure/service_bus/rules.rb +0 -110
- data/lib/azure/service_bus/rules/rule.rb +0 -97
- data/lib/azure/service_bus/rules/service.rb +0 -122
- data/lib/azure/service_bus/rules/uri.rb +0 -39
- data/lib/azure/service_bus/subscriptions.rb +0 -170
- data/lib/azure/service_bus/subscriptions/service.rb +0 -133
- data/lib/azure/service_bus/subscriptions/subscription.rb +0 -164
- data/lib/azure/service_bus/subscriptions/subscription_serializer.rb +0 -74
- data/lib/azure/service_bus/subscriptions/uri.rb +0 -71
- data/lib/azure/service_bus/topics.rb +0 -120
- data/lib/azure/service_bus/topics/service.rb +0 -98
- data/lib/azure/service_bus/topics/topic.rb +0 -122
- data/lib/azure/service_bus/topics/topic_serializer.rb +0 -44
- data/lib/azure/service_bus/topics/uri.rb +0 -58
- data/lib/azure/service_runtime/client/goal_state_pipe_monitor.rb +0 -21
- data/lib/azure/service_runtime/client/goal_state_protocol.rb +0 -18
- data/lib/azure/service_runtime/client/runtime_client.rb +0 -135
- data/lib/azure/service_runtime/deployment.rb +0 -24
- data/lib/azure/service_runtime/local_resource.rb +0 -15
- data/lib/azure/service_runtime/role.rb +0 -17
- data/lib/azure/service_runtime/role_environment.rb +0 -206
- data/lib/azure/service_runtime/role_environment_change.rb +0 -32
- data/lib/azure/service_runtime/role_instance.rb +0 -35
- data/lib/azure/service_runtime/role_instance_endpoint.rb +0 -14
- data/lib/azure/tables.rb +0 -215
- data/lib/azure/tables/auth/shared_key_lite.rb +0 -30
- data/lib/azure/tables/entities_collection.rb +0 -66
- data/lib/azure/tables/entity.rb +0 -127
- data/lib/azure/tables/service.rb +0 -211
- data/lib/azure/tables/table.rb +0 -129
- data/lib/azure/tables/tables_collection.rb +0 -62
- data/lib/azure/tables/types.rb +0 -65
- data/lib/azure/tables/uri.rb +0 -62
- data/test/integration/blobs/auth_test.rb +0 -19
- data/test/integration/blobs/blob_test.rb +0 -61
- data/test/integration/blobs/clear_page_range_test.rb +0 -19
- data/test/integration/blobs/copy_test.rb +0 -33
- data/test/integration/blobs/create_blobs_test.rb +0 -51
- data/test/integration/blobs/create_container_test.rb +0 -13
- data/test/integration/blobs/create_snapshot_test.rb +0 -17
- data/test/integration/blobs/delete_blob_snapshots_test.rb +0 -19
- data/test/integration/blobs/delete_blobs_test.rb +0 -25
- data/test/integration/blobs/delete_container_test.rb +0 -24
- data/test/integration/blobs/delete_snapshot_test.rb +0 -17
- data/test/integration/blobs/get_blob_snapshot_test.rb +0 -18
- data/test/integration/blobs/get_blobs_test.rb +0 -31
- data/test/integration/blobs/get_page_range_test.rb +0 -19
- data/test/integration/blobs/list_blobs_test.rb +0 -39
- data/test/integration/blobs/list_containers_test.rb +0 -28
- data/test/integration/blobs/manage_blob_leases_test.rb +0 -45
- data/test/integration/blobs/manage_blob_metadata_test.rb +0 -51
- data/test/integration/blobs/manage_blob_properties_test.rb +0 -25
- data/test/integration/blobs/manage_blob_service_properties_test.rb +0 -38
- data/test/integration/blobs/manage_container_metadata_test.rb +0 -46
- data/test/integration/blobs/manage_container_permissions_test.rb +0 -17
- data/test/integration/blobs/update_page_range_test.rb +0 -20
- data/test/integration/queues/clear_messages_test.rb +0 -22
- data/test/integration/queues/create_queue_test.rb +0 -13
- data/test/integration/queues/delete_message_test.rb +0 -42
- data/test/integration/queues/delete_queue_test.rb +0 -24
- data/test/integration/queues/get_messages_test.rb +0 -39
- data/test/integration/queues/list_queues_test.rb +0 -43
- data/test/integration/queues/manage_queue_metadata_test.rb +0 -45
- data/test/integration/queues/manage_queue_service_properties_test.rb +0 -27
- data/test/integration/queues/peek_messages_test.rb +0 -55
- data/test/integration/queues/put_message_test.rb +0 -31
- data/test/integration/queues/update_message_test.rb +0 -46
- data/test/integration/service_bus/auth_test.rb +0 -18
- data/test/integration/service_bus/queues/create_queue_test.rb +0 -25
- data/test/integration/service_bus/queues/delete_message_from_queue_test.rb +0 -29
- data/test/integration/service_bus/queues/delete_queue_test.rb +0 -25
- data/test/integration/service_bus/queues/get_queue_test.rb +0 -23
- data/test/integration/service_bus/queues/list_queues_test.rb +0 -39
- data/test/integration/service_bus/queues/peek_message_from_queue_test.rb +0 -34
- data/test/integration/service_bus/queues/read_and_delete_message_from_queue_test.rb +0 -31
- data/test/integration/service_bus/queues/send_message_to_queue_test.rb +0 -22
- data/test/integration/service_bus/queues/unlock_message_from_queue_test.rb +0 -36
- data/test/integration/service_bus/rules/create_rule_test.rb +0 -19
- data/test/integration/service_bus/rules/delete_rule_test.rb +0 -17
- data/test/integration/service_bus/rules/get_rule_test.rb +0 -21
- data/test/integration/service_bus/rules/list_rules_test.rb +0 -24
- data/test/integration/service_bus/rules/rule_test.rb +0 -16
- data/test/integration/service_bus/subscriptions/create_subscription_test.rb +0 -25
- data/test/integration/service_bus/subscriptions/delete_message_from_subscription_test.rb +0 -31
- data/test/integration/service_bus/subscriptions/delete_subscription_test.rb +0 -30
- data/test/integration/service_bus/subscriptions/fetch_subscription_test.rb +0 -28
- data/test/integration/service_bus/subscriptions/list_subscriptions_test.rb +0 -23
- data/test/integration/service_bus/subscriptions/peek_lock_message_from_subscription_test.rb +0 -42
- data/test/integration/service_bus/subscriptions/read_delete_message_from_subscription_test.rb +0 -36
- data/test/integration/service_bus/subscriptions/subscription_test.rb +0 -31
- data/test/integration/service_bus/subscriptions/unlock_message_from_subscription_test.rb +0 -43
- data/test/integration/service_bus/topics/create_topic_test.rb +0 -25
- data/test/integration/service_bus/topics/delete_topic_test.rb +0 -25
- data/test/integration/service_bus/topics/get_topic_test.rb +0 -23
- data/test/integration/service_bus/topics/list_topics_test.rb +0 -39
- data/test/integration/service_bus/topics/send_message_to_topic_test.rb +0 -23
- data/test/integration/tables/auth_test.rb +0 -29
- data/test/integration/tables/creating_tables_test.rb +0 -16
- data/test/integration/tables/delete_entity_test.rb +0 -39
- data/test/integration/tables/deleting_table_test.rb +0 -22
- data/test/integration/tables/insert_entity_test.rb +0 -23
- data/test/integration/tables/merge_entity_test.rb +0 -28
- data/test/integration/tables/query_entities_test.rb +0 -131
- data/test/integration/tables/query_tables_test.rb +0 -63
- data/test/integration/tables/update_entity_test.rb +0 -54
- data/test/support/blobs.rb +0 -12
- data/test/support/table_names.rb +0 -44
- data/test/unit/atom_test.rb +0 -58
- data/test/unit/auth_test.rb +0 -24
- data/test/unit/blobs/blob_test.rb +0 -5
- data/test/unit/blobs/container_test.rb +0 -67
- data/test/unit/blobs/service_test.rb +0 -17
- data/test/unit/blobs/shared_access_signature_test.rb +0 -66
- data/test/unit/blobs_test.rb +0 -156
- data/test/unit/core/service_test.rb +0 -57
- data/test/unit/core/utils/interval_test.rb +0 -70
- data/test/unit/core/utils/queryable_test.rb +0 -69
- data/test/unit/core/utils/storage_service_properties_test.rb +0 -66
- data/test/unit/error_test.rb +0 -39
- data/test/unit/queues/message_test.rb +0 -40
- data/test/unit/queues/queue_test.rb +0 -64
- data/test/unit/queues/service_properties.rb +0 -35
- data/test/unit/request_test.rb +0 -38
- data/test/unit/response_test.rb +0 -43
- data/test/unit/service_bus/auth/authorizer_test.rb +0 -27
- data/test/unit/service_bus/auth/wrap_token_test.rb +0 -28
- data/test/unit/service_bus/queues/queue_test.rb +0 -38
- data/test/unit/service_bus/topics/topic_test.rb +0 -33
- data/test/unit/service_runtime/data/goalstate.xml +0 -9
- data/test/unit/service_runtime/data/roleenvironmentdata.xml +0 -29
- data/test/unit/service_runtime/data/runtime.xml +0 -6
- data/test/unit/service_runtime/role_environment_test.rb +0 -144
- data/test/unit/tables/auth/shared_key_lite_test.rb +0 -39
- data/test/unit/tables/auth/shared_key_test.rb +0 -45
- data/test/unit/tables/entities_collection_test.rb +0 -39
- data/test/unit/tables/entity_test.rb +0 -72
- data/test/unit/tables/table_test.rb +0 -57
- data/test/unit/tables_test.rb +0 -302
- data/test/unit/types_test.rb +0 -67
data/lib/azure/blobs/uri.rb
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
require "azure/configuration"
|
|
2
|
-
require "uri"
|
|
3
|
-
|
|
4
|
-
module Azure
|
|
5
|
-
module Blobs
|
|
6
|
-
module URI
|
|
7
|
-
# Public: Generate the URI for the collection of containers.
|
|
8
|
-
#
|
|
9
|
-
# query - A Hash of key => value query parameters.
|
|
10
|
-
# host - The host of the API.
|
|
11
|
-
#
|
|
12
|
-
# Returns a URI.
|
|
13
|
-
def self.containers(query={}, host=Azure.config.blob_host)
|
|
14
|
-
query = { "comp" => "list" }.merge(query)
|
|
15
|
-
uri = join(host, "/")
|
|
16
|
-
uri.query = ::URI.encode_www_form(query)
|
|
17
|
-
uri
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Public: Generate the URI for a specific container.
|
|
21
|
-
#
|
|
22
|
-
# name - The container name. If this is a URI, we just return this.
|
|
23
|
-
# query - A Hash of key => value query parameters.
|
|
24
|
-
# host - The host of the API.
|
|
25
|
-
#
|
|
26
|
-
# Returns a URI.
|
|
27
|
-
def self.container(name, query={}, host=Azure.config.blob_host)
|
|
28
|
-
return name if name.kind_of? ::URI
|
|
29
|
-
query = { "restype" => "container" }.merge(query)
|
|
30
|
-
uri = join(host, name)
|
|
31
|
-
uri.query = ::URI.encode_www_form(query)
|
|
32
|
-
uri
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Public: Generate the URI for a specific Blob.
|
|
36
|
-
#
|
|
37
|
-
# container_name - String representing the name of the container.
|
|
38
|
-
# blob_name - String representing the name of the blob.
|
|
39
|
-
# query - A Hash of key => value query parameters.
|
|
40
|
-
# host - The host of the API.
|
|
41
|
-
#
|
|
42
|
-
# Returns a URI.
|
|
43
|
-
def self.blob(container_name, blob_name, query={}, host=Azure.config.blob_host)
|
|
44
|
-
uri = join(host, File.join(container_name, blob_name))
|
|
45
|
-
uri.query = ::URI.encode_www_form(query)
|
|
46
|
-
uri
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Utility method to generate the URI.
|
|
50
|
-
#
|
|
51
|
-
# host - A String with the URI's host.
|
|
52
|
-
# path - A String with the URI's path.
|
|
53
|
-
#
|
|
54
|
-
# Returns a URI.
|
|
55
|
-
def self.join(host, path)
|
|
56
|
-
::URI.parse(File.join(host, path))
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
data/lib/azure/configuration.rb
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
require "singleton"
|
|
2
|
-
|
|
3
|
-
module Azure
|
|
4
|
-
# Public: Sugar to configure the services in a neatly wrapped DSL.
|
|
5
|
-
#
|
|
6
|
-
# Yields the Azure::Configuration instance.
|
|
7
|
-
#
|
|
8
|
-
# Example:
|
|
9
|
-
#
|
|
10
|
-
# Azure.configure do |config|
|
|
11
|
-
# config.account_name = ENV["AZURE_ACCOUNT_NAME"]
|
|
12
|
-
# end
|
|
13
|
-
#
|
|
14
|
-
# Returns nothing.
|
|
15
|
-
def self.configure
|
|
16
|
-
yield config
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# Public: Access the service configuration.
|
|
20
|
-
#
|
|
21
|
-
# Returns the Azure::Configuration instance.
|
|
22
|
-
def self.config
|
|
23
|
-
Configuration.instance
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Singleton that keeps the configuration of the system.
|
|
27
|
-
class Configuration
|
|
28
|
-
include Singleton
|
|
29
|
-
|
|
30
|
-
# Public: Get/Set the Access Key for this service.
|
|
31
|
-
attr_accessor :access_key
|
|
32
|
-
|
|
33
|
-
# Public: Get/Set the Account Name for this service.
|
|
34
|
-
attr_accessor :account_name
|
|
35
|
-
|
|
36
|
-
# # Public: Get/Set the Access Control Namespace for this service.
|
|
37
|
-
# attr_accessor :acs_namespace
|
|
38
|
-
|
|
39
|
-
# Public: Get/Set the Service Bus Access Key (Issuer Secret) for this service.
|
|
40
|
-
attr_accessor :sb_access_key
|
|
41
|
-
|
|
42
|
-
# Public: Get/Set the Service Bus Issuer for this service.
|
|
43
|
-
attr_accessor :sb_issuer
|
|
44
|
-
|
|
45
|
-
# Public: Get/Set the ACS namespace for this service.
|
|
46
|
-
attr_accessor :acs_namespace
|
|
47
|
-
|
|
48
|
-
# Public: Set the host for the Table service. Only set this if you want
|
|
49
|
-
# something custom (like, for example, to point this to a LocalStorage
|
|
50
|
-
# emulator). This should be the complete host, including http:// at the
|
|
51
|
-
# start. When using the emulator, make sure to include your account name at
|
|
52
|
-
# the end.
|
|
53
|
-
#
|
|
54
|
-
# Example:
|
|
55
|
-
#
|
|
56
|
-
# config.table_host = "http://127.0.0.1:10002/devstoreaccount1"
|
|
57
|
-
attr_writer :table_host
|
|
58
|
-
|
|
59
|
-
# Public: Get the host for this service. If you set something using #host=,
|
|
60
|
-
# then we use that. Else we default to Windows Azure's default hosts, based
|
|
61
|
-
# on your account name.
|
|
62
|
-
def table_host
|
|
63
|
-
@table_host || default_host(:table)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Public: Set the host for the Blob service. Only set this if you want
|
|
67
|
-
# something custom (like, for example, to point this to a LocalStorage
|
|
68
|
-
# emulator). This should be the complete host, including http:// at the
|
|
69
|
-
# start. When using the emulator, make sure to include your account name at
|
|
70
|
-
# the end.
|
|
71
|
-
#
|
|
72
|
-
# Example:
|
|
73
|
-
#
|
|
74
|
-
# config.blob_host = "http://127.0.0.1:10000/devstoreaccount1"
|
|
75
|
-
attr_writer :blob_host
|
|
76
|
-
|
|
77
|
-
# Public: Get the host for this service. If you set something using #host=,
|
|
78
|
-
# then we use that. Else we default to Windows Azure's default hosts, based
|
|
79
|
-
# on your account name.
|
|
80
|
-
def blob_host
|
|
81
|
-
@blob_host || default_host(:blob)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# Public: Set the host for the Queue service. Only set this if you want
|
|
85
|
-
# something custom (like, for example, to point this to a LocalStorage
|
|
86
|
-
# emulator). This should be the complete host, including http:// at the
|
|
87
|
-
# start. When using the emulator, make sure to include your account name at
|
|
88
|
-
# the end.
|
|
89
|
-
#
|
|
90
|
-
# Example:
|
|
91
|
-
#
|
|
92
|
-
# config.queue_host = "http://127.0.0.1:10001/devstoreaccount1"
|
|
93
|
-
attr_writer :queue_host
|
|
94
|
-
|
|
95
|
-
# Public: Get the host for this service. If you set something using #host=,
|
|
96
|
-
# then we use that. Else we default to Windows Azure's default hosts, based
|
|
97
|
-
# on your account name.
|
|
98
|
-
def queue_host
|
|
99
|
-
@queue_host || default_host(:queue)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Public: Get the host for the ACS service.
|
|
103
|
-
def acs_host
|
|
104
|
-
"https://#{acs_namespace}-sb.accesscontrol.windows.net"
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Public: Get the host for the Service Bus service.
|
|
108
|
-
def service_bus_host
|
|
109
|
-
"https://#{acs_namespace}.servicebus.windows.net"
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# Calculate the default host for a given service in the cloud.
|
|
113
|
-
#
|
|
114
|
-
# service - One of :table, :blob, :queue, etc.
|
|
115
|
-
#
|
|
116
|
-
# Returns a String with the hostname, including your account name.
|
|
117
|
-
def default_host(service)
|
|
118
|
-
"http://#{account_name}.#{service}.core.windows.net"
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
end
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
require "delegate"
|
|
2
|
-
|
|
3
|
-
module Azure
|
|
4
|
-
module Core
|
|
5
|
-
# A collection serves two functions: it is an array of models, and at the
|
|
6
|
-
# same time serves as a proxy to certain services for the models in the
|
|
7
|
-
# array.
|
|
8
|
-
#
|
|
9
|
-
# A Collection belongs to a "parent" object; for example, a collection
|
|
10
|
-
# of mesages belongs to a queue.
|
|
11
|
-
#
|
|
12
|
-
# Examples
|
|
13
|
-
#
|
|
14
|
-
# # Get the collection
|
|
15
|
-
# queue.messages
|
|
16
|
-
#
|
|
17
|
-
# # Create a new message
|
|
18
|
-
# queue.messages.create("message text")
|
|
19
|
-
#
|
|
20
|
-
# # Fetch a single message
|
|
21
|
-
# message = queue.messages["some-message-id"]
|
|
22
|
-
#
|
|
23
|
-
# # Work with the messages
|
|
24
|
-
# queue.messages.each { |msg| ... }
|
|
25
|
-
class Collection < DelegateClass(Array)
|
|
26
|
-
include Azure::ErrorHandler
|
|
27
|
-
|
|
28
|
-
# Public: Initialize the collection.
|
|
29
|
-
#
|
|
30
|
-
# parent - The object that owns this collection.
|
|
31
|
-
# as - The name of the relationship between the collection's
|
|
32
|
-
# items and the parent.
|
|
33
|
-
# model_class - The class of the model this collection represents.
|
|
34
|
-
# service - The service that implements remote calls.
|
|
35
|
-
def initialize(parent, as, model_class, service)
|
|
36
|
-
@parent = parent
|
|
37
|
-
@as = as
|
|
38
|
-
@model_class = model_class
|
|
39
|
-
@service = service
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Public: Load the underlying collection from the server.
|
|
43
|
-
#
|
|
44
|
-
# Returns self.
|
|
45
|
-
def load!
|
|
46
|
-
collection = @service.all(@parent)
|
|
47
|
-
collection.each { |el| set_parent(el) }
|
|
48
|
-
__setobj__(collection)
|
|
49
|
-
self
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Public: Create a new model in this collection.
|
|
53
|
-
#
|
|
54
|
-
# *args - Any arguments that the model's constructor takes.
|
|
55
|
-
#
|
|
56
|
-
# Yields the model before being created for modification.
|
|
57
|
-
#
|
|
58
|
-
# Returns an instance of the model.
|
|
59
|
-
def create(*args, &block)
|
|
60
|
-
model = @model_class.new(*args, &block)
|
|
61
|
-
set_parent(model)
|
|
62
|
-
@service.create(model)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Public: Fetch a model by its identifier(s).
|
|
66
|
-
#
|
|
67
|
-
# *ids - The identifier(s) of the model.
|
|
68
|
-
#
|
|
69
|
-
# Returns an instance of the model when it's a valid identifier.
|
|
70
|
-
# Returns nil when no model matches the identifier.
|
|
71
|
-
def [](*ids)
|
|
72
|
-
fetch(*ids) { nil }
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Public: Find a model by its identifier(s). If no model matches the
|
|
76
|
-
# provided identifier(s), execute the given block, or raise ArgumentError.
|
|
77
|
-
#
|
|
78
|
-
# *ids - The identifier(s) of the model.
|
|
79
|
-
#
|
|
80
|
-
# Yields the error returned by the server in case the model wasn't found.
|
|
81
|
-
#
|
|
82
|
-
# Returns an instance of the model.
|
|
83
|
-
# Raises ArgumentError if the model isn't found and no block is given.
|
|
84
|
-
def fetch(*ids, &block)
|
|
85
|
-
block ||= -> { raise ArgumentError, "can't find #{@model_class} identified by #{id.inspect}" }
|
|
86
|
-
model = @service.fetch(@parent, *ids)
|
|
87
|
-
model.valid? ? model : block.call(model.error)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Internal: Get the underlying collection to which we delegate. If the
|
|
91
|
-
# collection wasn't already loaded, it loads it from the server.
|
|
92
|
-
#
|
|
93
|
-
# Returns an Array.
|
|
94
|
-
def __getobj__
|
|
95
|
-
load! unless defined?(@__delegated_list)
|
|
96
|
-
@__delegated_list
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Internal: Change the underlying collection to which we delegate.
|
|
100
|
-
#
|
|
101
|
-
# collection - An Array.
|
|
102
|
-
#
|
|
103
|
-
# Returns the collection.
|
|
104
|
-
def __setobj__(collection)
|
|
105
|
-
@__delegated_list = collection
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Internal: Change the parent object of the given model.
|
|
109
|
-
#
|
|
110
|
-
# object - A model in this collection.
|
|
111
|
-
#
|
|
112
|
-
# Returns the parent.
|
|
113
|
-
def set_parent(object)
|
|
114
|
-
object.send("#{@as}=", @parent)
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
data/lib/azure/core/signer.rb
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
require "openssl"
|
|
2
|
-
require "base64"
|
|
3
|
-
require "azure/configuration"
|
|
4
|
-
|
|
5
|
-
module Azure
|
|
6
|
-
module Core
|
|
7
|
-
# Public: Utility class to sign strings with HMAC-256 and then encode the
|
|
8
|
-
# signed string using Base64.
|
|
9
|
-
class Signer
|
|
10
|
-
# The Azure account's access key.
|
|
11
|
-
attr :access_key
|
|
12
|
-
|
|
13
|
-
# Public: Initialize the Signer.
|
|
14
|
-
#
|
|
15
|
-
# access_key - The Azure access_key encoded in Base64. Defaults to the one
|
|
16
|
-
# in the global configuration.
|
|
17
|
-
def initialize(access_key=Azure.config.access_key)
|
|
18
|
-
@access_key = Base64.strict_decode64(access_key)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Public: Generate an HMAC signature.
|
|
22
|
-
#
|
|
23
|
-
# body - The string to sign.
|
|
24
|
-
#
|
|
25
|
-
# Returns a Base64 String signed with HMAC.
|
|
26
|
-
def sign(body)
|
|
27
|
-
signed = OpenSSL::HMAC.digest("sha256", access_key, body)
|
|
28
|
-
Base64.strict_encode64(signed)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
require "uri"
|
|
2
|
-
|
|
3
|
-
module Azure
|
|
4
|
-
module Core
|
|
5
|
-
module Utils
|
|
6
|
-
# Convenience module to build query strings.
|
|
7
|
-
module Queryable
|
|
8
|
-
# Public: Build a query from a options hash.
|
|
9
|
-
#
|
|
10
|
-
# options - A hash of options.
|
|
11
|
-
# :partition_key - Only get entities with this PartitionKey
|
|
12
|
-
# (optional, but :row_key must also be
|
|
13
|
-
# included).
|
|
14
|
-
# :row_key - Only get entities with this RowKey
|
|
15
|
-
# (optional, but :partition_key must also
|
|
16
|
-
# be included).
|
|
17
|
-
# :select - An array with property names. Only these
|
|
18
|
-
# properties are provided from the
|
|
19
|
-
# returned returned set of entities.
|
|
20
|
-
# :filter - A string to filter results.
|
|
21
|
-
# :top - Returns only the top n results from the set.
|
|
22
|
-
# :skip - Skips the first n results from the set.
|
|
23
|
-
#
|
|
24
|
-
# Returns a query string
|
|
25
|
-
def build_query(options)
|
|
26
|
-
select = options.fetch(:select, nil)
|
|
27
|
-
select = "$select=#{select.join(",")}" if select
|
|
28
|
-
|
|
29
|
-
filter = options.fetch(:filter, nil)
|
|
30
|
-
filter = "$filter=#{filter}" if filter
|
|
31
|
-
|
|
32
|
-
top = options.fetch(:top, nil)
|
|
33
|
-
top = "$top=#{top}" if top
|
|
34
|
-
|
|
35
|
-
skip = options.fetch(:skip, nil)
|
|
36
|
-
skip = "$skip=#{skip}" if skip
|
|
37
|
-
|
|
38
|
-
next_partition_key = options.fetch("NextPartitionKey", nil)
|
|
39
|
-
next_partition_key = "NextPartitionKey=#{next_partition_key}" if next_partition_key
|
|
40
|
-
|
|
41
|
-
next_row_key = options.fetch("NextRowKey", nil)
|
|
42
|
-
next_row_key = "NextRowKey=#{next_row_key}" if next_row_key
|
|
43
|
-
|
|
44
|
-
next_table_name = options.fetch("NextTableName", nil)
|
|
45
|
-
next_table_name = "NextTableName=#{next_table_name}" if next_table_name
|
|
46
|
-
|
|
47
|
-
query = [next_table_name, next_partition_key, next_row_key,
|
|
48
|
-
select, filter, top, skip].compact.join("&")
|
|
49
|
-
|
|
50
|
-
query != "" ? ::URI.encode(query) : nil
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Public: Build a Hash with translated keys from a options hash.
|
|
54
|
-
#
|
|
55
|
-
# options - A hash of options.
|
|
56
|
-
# :top - Returns only the top n results from the set.
|
|
57
|
-
# :skip - Skips the first n results from the set.
|
|
58
|
-
#
|
|
59
|
-
# Returns a query string
|
|
60
|
-
def translate_options_hash(options)
|
|
61
|
-
hash = {}
|
|
62
|
-
|
|
63
|
-
skip = options.fetch(:skip, nil)
|
|
64
|
-
hash["$skip"] = skip if skip
|
|
65
|
-
|
|
66
|
-
top = options.fetch(:top, nil)
|
|
67
|
-
hash["$top"] = top if top
|
|
68
|
-
|
|
69
|
-
hash
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
require 'nokogiri'
|
|
2
|
-
|
|
3
|
-
module Azure
|
|
4
|
-
module Core
|
|
5
|
-
module Utils
|
|
6
|
-
class StorageServiceProperties
|
|
7
|
-
|
|
8
|
-
REQUIRED_ELEMENTS = {
|
|
9
|
-
"Version" => true,
|
|
10
|
-
"Delete" => true,
|
|
11
|
-
"Read" => true,
|
|
12
|
-
"Write" => true,
|
|
13
|
-
"Enabled" => true,
|
|
14
|
-
"RetentionPolicy / Enabled" => true,
|
|
15
|
-
"RetentionPolicy / Days" => true,
|
|
16
|
-
"IncludeAPIs" => "Metrics"
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
def self.hash_to_xml(hash)
|
|
20
|
-
doc = Nokogiri::XML::Document.new
|
|
21
|
-
doc.encoding = "utf-8"
|
|
22
|
-
root = Nokogiri::XML::Node.new("StorageServiceProperties", doc)
|
|
23
|
-
iterate_hash(hash, root, doc)
|
|
24
|
-
doc << root
|
|
25
|
-
validate(doc)
|
|
26
|
-
doc
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.hash_to_xml_string(hash)
|
|
30
|
-
hash_to_xml(hash).to_xml
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def self.xml_string_to_hash(xml)
|
|
34
|
-
doc = Nokogiri::XML.parse(xml)
|
|
35
|
-
iterate_node(doc)["StorageServiceProperties"]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
def self.iterate_node(node)
|
|
41
|
-
node.children.each_with_object({}) do |node, hash|
|
|
42
|
-
|
|
43
|
-
next if !node.element?
|
|
44
|
-
|
|
45
|
-
if node.children.size == 1
|
|
46
|
-
hash[node.name] = node.text
|
|
47
|
-
else
|
|
48
|
-
hash[node.name] = iterate_node(node)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def self.iterate_hash(hash, root, doc)
|
|
54
|
-
hash.each do |key, value|
|
|
55
|
-
if value.is_a?(Hash)
|
|
56
|
-
node = Nokogiri::XML::Node.new(key, doc)
|
|
57
|
-
iterate_hash(value, node, doc)
|
|
58
|
-
root << node
|
|
59
|
-
else
|
|
60
|
-
node = Nokogiri::XML::Node.new(key, doc)
|
|
61
|
-
node.content = value
|
|
62
|
-
root << node
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def self.validate(doc)
|
|
68
|
-
missing_keys = []
|
|
69
|
-
|
|
70
|
-
REQUIRED_ELEMENTS.each do |key,value|
|
|
71
|
-
if value == true
|
|
72
|
-
missing_keys << key if (doc / key).empty?
|
|
73
|
-
elsif (doc / value).empty? || (doc / key).empty?
|
|
74
|
-
missing_keys << key
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
raise StandardError, "StorageServicePropertiesMissing", missing_keys if !missing_keys.empty?
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|