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/tables/service.rb
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
require "azure/core/service"
|
|
2
|
-
require "azure/core/utils/queryable"
|
|
3
|
-
require "azure/tables/auth/shared_key"
|
|
4
|
-
require "azure/tables/auth/shared_key_lite"
|
|
5
|
-
require "azure/tables/uri"
|
|
6
|
-
require "azure/atom"
|
|
7
|
-
|
|
8
|
-
module Azure
|
|
9
|
-
module Tables
|
|
10
|
-
class Service < Core::Service
|
|
11
|
-
def initialize(signer=Azure::Tables::Auth::SharedKey.new)
|
|
12
|
-
super(signer)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
module Services
|
|
17
|
-
# Public: Get a list of tables from the server.
|
|
18
|
-
class QueryTables < Service
|
|
19
|
-
include Core::Utils::Queryable
|
|
20
|
-
|
|
21
|
-
# Public: Invoke the service.
|
|
22
|
-
#
|
|
23
|
-
# query - A hash of options.
|
|
24
|
-
# :filter - A string to filter results.
|
|
25
|
-
# :top - Returns only the top n tables from the set.
|
|
26
|
-
#
|
|
27
|
-
# To read more about supported query filters check this link.
|
|
28
|
-
# http://msdn.microsoft.com/en-us/library/windowsazure/dd894031
|
|
29
|
-
#
|
|
30
|
-
# Returns a Response.
|
|
31
|
-
def call(query)
|
|
32
|
-
uri = Tables::URI.collection
|
|
33
|
-
query.delete(:select)
|
|
34
|
-
uri.query = build_query(query)
|
|
35
|
-
super(:get, uri) do |request|
|
|
36
|
-
request.headers["DataServiceVersion"] = "2.0;NetFx"
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Public: Find a single table by name.
|
|
42
|
-
class FetchTable < Service
|
|
43
|
-
# Public: Invoke the service.
|
|
44
|
-
#
|
|
45
|
-
# name - The name of the table.
|
|
46
|
-
#
|
|
47
|
-
# Returns a Response.
|
|
48
|
-
def call(name)
|
|
49
|
-
uri = Tables::URI.table(name)
|
|
50
|
-
super(:get, uri)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Public: Create a table.
|
|
55
|
-
class CreateTable < Service
|
|
56
|
-
# Public: Invoke the service.
|
|
57
|
-
#
|
|
58
|
-
# table_name - A String with the table name.
|
|
59
|
-
#
|
|
60
|
-
# Returns a Response.
|
|
61
|
-
def call(table_name)
|
|
62
|
-
body = Atom::Entry.new do |entry|
|
|
63
|
-
entry.properties["TableName"] = table_name
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
super(:post, Tables::URI.collection, body.to_xml)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Public: Delete a table.
|
|
71
|
-
class DeleteTable < Service
|
|
72
|
-
# Public: Invoke the service.
|
|
73
|
-
#
|
|
74
|
-
# table_name - A String with the table name.
|
|
75
|
-
#
|
|
76
|
-
# Returns a Response.
|
|
77
|
-
def call(table_name)
|
|
78
|
-
super(:delete, Tables::URI.table(table_name))
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Public: Insert an entity into a table.
|
|
83
|
-
class InsertEntity < Service
|
|
84
|
-
# Public: Invoke the service.
|
|
85
|
-
#
|
|
86
|
-
# table_name - A String with the table name.
|
|
87
|
-
# attributes - A Hash of entity attributes. The hash *must* contain the
|
|
88
|
-
# keys: "PartitionKey" and "RowKey".
|
|
89
|
-
#
|
|
90
|
-
# Returns a Response.
|
|
91
|
-
def call(table_name, attributes)
|
|
92
|
-
body = Atom::Entry.new do |entry|
|
|
93
|
-
entry.updated = Time.now.utc
|
|
94
|
-
entry.properties.merge(attributes)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
super(:post, Tables::URI.entities(table_name), body.to_xml)
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# Public: Replace the attributes of an existing entity.
|
|
102
|
-
class ReplaceEntity < Service
|
|
103
|
-
# Public: Invoke the service.
|
|
104
|
-
#
|
|
105
|
-
# table_name - A String with the table name.
|
|
106
|
-
# attributes - A Hash of entity attributes. The hash *must* contain the
|
|
107
|
-
# keys: "PartitionKey" and "RowKey".
|
|
108
|
-
# etag - The condition to perform the update. "*" will force an
|
|
109
|
-
# unconditional update.
|
|
110
|
-
#
|
|
111
|
-
# Returns a Response.
|
|
112
|
-
def call(table_name, attributes, etag)
|
|
113
|
-
uri = Tables::URI.entities(
|
|
114
|
-
table_name,
|
|
115
|
-
attributes.fetch("PartitionKey"),
|
|
116
|
-
attributes.fetch("RowKey")
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
body = Atom::Entry.new do |entry|
|
|
120
|
-
entry.id = uri
|
|
121
|
-
entry.updated = Time.now.utc
|
|
122
|
-
entry.properties.merge(attributes)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
super(:put, uri, body.to_xml) do |request|
|
|
126
|
-
request.headers["If-Match"] = etag
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Public: Update only certain properties of an entity.
|
|
132
|
-
class MergeEntity < Service
|
|
133
|
-
# Public: Invoke the service.
|
|
134
|
-
#
|
|
135
|
-
# uri - The URI of the Entity we're updating.
|
|
136
|
-
# attributes - A Hash of new entity attributes.
|
|
137
|
-
# etag - The condition to perform the update. "*" will force an
|
|
138
|
-
# unconditional update.
|
|
139
|
-
#
|
|
140
|
-
# Returns a Response.
|
|
141
|
-
def call(uri, attributes, etag)
|
|
142
|
-
body = Atom::Entry.new do |entry|
|
|
143
|
-
entry.id = uri
|
|
144
|
-
entry.updated = Time.now.utc
|
|
145
|
-
entry.properties.merge(attributes)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
super(:post, uri, body.to_xml) do |request|
|
|
149
|
-
request.headers["If-Match"] = etag
|
|
150
|
-
request.headers["X-HTTP-Method"] = "MERGE"
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
# Public: Delete an Entity
|
|
156
|
-
class DeleteEntity < Service
|
|
157
|
-
# Public: Invoke the service.
|
|
158
|
-
#
|
|
159
|
-
# uri - The URI of the Entity we're deleting.
|
|
160
|
-
# etag - The condition to perform the update. "*" will force an
|
|
161
|
-
# unconditional update.
|
|
162
|
-
#
|
|
163
|
-
# Returns a Response.
|
|
164
|
-
def call(uri, etag)
|
|
165
|
-
super(:delete, uri) do |request|
|
|
166
|
-
request.headers["If-Match"] = etag
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
# Public: Get entities from a given table.
|
|
172
|
-
class QueryEntities < Service
|
|
173
|
-
include Core::Utils::Queryable
|
|
174
|
-
|
|
175
|
-
# Public: Invoke the service.
|
|
176
|
-
#
|
|
177
|
-
# table_name - A String with the table name.
|
|
178
|
-
# query - A hash of options.
|
|
179
|
-
# :partition_key - Only get entities with this PartitionKey
|
|
180
|
-
# (optional, but :row_key must also be
|
|
181
|
-
# included).
|
|
182
|
-
# :row_key - Only get entities with this RowKey
|
|
183
|
-
# (optional, but :partition_key must also
|
|
184
|
-
# be included).
|
|
185
|
-
# :select - An array with property names. Only these
|
|
186
|
-
# properties are provided from the
|
|
187
|
-
# returned returned set of entities.
|
|
188
|
-
# :filter - A string to filter results.
|
|
189
|
-
# :top - Returns only the top n tables or entities from the set.
|
|
190
|
-
#
|
|
191
|
-
# To read more about supported query filters check this link.
|
|
192
|
-
# http://msdn.microsoft.com/en-us/library/windowsazure/dd894031
|
|
193
|
-
#
|
|
194
|
-
# Returns a Response.
|
|
195
|
-
def call(table_name, query)
|
|
196
|
-
uri = Tables::URI.entities(
|
|
197
|
-
table_name,
|
|
198
|
-
query.fetch(:partition_key, nil),
|
|
199
|
-
query.fetch(:row_key, nil)
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
uri.query = build_query(query)
|
|
203
|
-
|
|
204
|
-
super(:get, uri) do |request|
|
|
205
|
-
request.headers["DataServiceVersion"] = "2.0;NetFx"
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
|
-
end
|
data/lib/azure/tables/table.rb
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
require "azure/tables"
|
|
2
|
-
require "azure/tables/uri"
|
|
3
|
-
require "azure/error"
|
|
4
|
-
require "uri"
|
|
5
|
-
|
|
6
|
-
module Azure
|
|
7
|
-
module Tables
|
|
8
|
-
# Public: Representation of a Table in the storage system.
|
|
9
|
-
class Table
|
|
10
|
-
include Azure::ErrorHandler
|
|
11
|
-
|
|
12
|
-
# Get the Table's URI.
|
|
13
|
-
#
|
|
14
|
-
# Returns a URI.
|
|
15
|
-
attr :url
|
|
16
|
-
|
|
17
|
-
# Get the Table's name.
|
|
18
|
-
#
|
|
19
|
-
# Returns a String.
|
|
20
|
-
attr :name
|
|
21
|
-
|
|
22
|
-
# Public: Instantiate a table from an Atom entry.
|
|
23
|
-
#
|
|
24
|
-
# entry - An Atom::Entry element.
|
|
25
|
-
#
|
|
26
|
-
# Returns a Table.
|
|
27
|
-
def self.from_entry(entry)
|
|
28
|
-
name = entry.content.m_properties.children.first.content
|
|
29
|
-
new(name, ::URI.parse(entry.id))
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Public: Instantiate a table from an error object.
|
|
33
|
-
#
|
|
34
|
-
# error - An Azure::Error.
|
|
35
|
-
#
|
|
36
|
-
# Returns a Table.
|
|
37
|
-
def self.from_error(error)
|
|
38
|
-
table = new(nil, nil)
|
|
39
|
-
table.error = error
|
|
40
|
-
table
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Public: Create a Table. The resulting table will be invalid if the
|
|
44
|
-
# create operation fails.
|
|
45
|
-
#
|
|
46
|
-
# name - The name of the table.
|
|
47
|
-
# service - The Table service to perform external calls.
|
|
48
|
-
#
|
|
49
|
-
# Returns a Table.
|
|
50
|
-
def self.create(name, service=Azure::Tables)
|
|
51
|
-
service.create(name)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Public: Find a Table by name. If no table matches the provided name, nil
|
|
55
|
-
# is returned.
|
|
56
|
-
#
|
|
57
|
-
# name - The name of the table.
|
|
58
|
-
#
|
|
59
|
-
# Returns a Table or nil.
|
|
60
|
-
def self.[](name)
|
|
61
|
-
fetch(name) { nil }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Public: Find a Table by name. If no table matches the provided name,
|
|
65
|
-
# execute the given block, or raise ArgumentError.
|
|
66
|
-
#
|
|
67
|
-
# name - The name of the table.
|
|
68
|
-
# service - The Table service to perform external calls.
|
|
69
|
-
#
|
|
70
|
-
# Yields the error returned by the server in case the table wasn't found.
|
|
71
|
-
#
|
|
72
|
-
# Returns a Table.
|
|
73
|
-
# Raises ArgumentError if the table isn't found and no block is given.
|
|
74
|
-
def self.fetch(name, service=Azure::Tables, &block)
|
|
75
|
-
block ||= -> { raise ArgumentError, "Can't find Table named '#{name}'" }
|
|
76
|
-
table = service.fetch(name)
|
|
77
|
-
table.valid? ? table : block.call(table.error)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Public: Initialize the table.
|
|
81
|
-
#
|
|
82
|
-
# name - A String with the name of the table.
|
|
83
|
-
# url - The URI of the table in the service.
|
|
84
|
-
# service - The Table service to perform external calls.
|
|
85
|
-
def initialize(name, url=Azure::Tables::URI.table(name), service=Azure::Tables)
|
|
86
|
-
@name = name
|
|
87
|
-
@url = url
|
|
88
|
-
@service = service
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Public: Compare two tables to see if they are the same.
|
|
92
|
-
#
|
|
93
|
-
# other - A table.
|
|
94
|
-
#
|
|
95
|
-
# Returns true|false.
|
|
96
|
-
def ==(other)
|
|
97
|
-
name == other.name
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# Public: Deletes this table from the storage service.
|
|
101
|
-
#
|
|
102
|
-
# Returns true|false to indicate whether the delete was successful or not.
|
|
103
|
-
def delete
|
|
104
|
-
@service.delete(self)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Public: Insert a new entity into this table. If the operation fails, an
|
|
108
|
-
# error will be added to the entity.
|
|
109
|
-
#
|
|
110
|
-
# entity - An Azure::Tables::Entity.
|
|
111
|
-
#
|
|
112
|
-
# Returns the entity.
|
|
113
|
-
def insert(entity)
|
|
114
|
-
@service.insert_entity(self, entity)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# Public: Query for entities in this table.
|
|
118
|
-
#
|
|
119
|
-
# Returns a list of entities.
|
|
120
|
-
def entities(query={})
|
|
121
|
-
if query.key?(:partition_key) && query.key?(:row_key)
|
|
122
|
-
@service.query_entity(self, query.delete(:partition_key), query.delete(:row_key), query)
|
|
123
|
-
else
|
|
124
|
-
@service.query_entities(self, query)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
require "azure/tables"
|
|
2
|
-
|
|
3
|
-
module Azure
|
|
4
|
-
module Tables
|
|
5
|
-
|
|
6
|
-
class TablesCollection < Array
|
|
7
|
-
|
|
8
|
-
# Public: Create an Azure::Tables::TablesCollection instance.
|
|
9
|
-
#
|
|
10
|
-
# query - A Hash with the query options passed to the server to get the tables.
|
|
11
|
-
#
|
|
12
|
-
# Returns the instance.
|
|
13
|
-
def initialize(query = {}, service = Azure::Tables)
|
|
14
|
-
@query = query
|
|
15
|
-
@service = service
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# Public: Creates an Azure::Tables::TablesCollection from entries feed.
|
|
19
|
-
#
|
|
20
|
-
# entries - An array of xml entries.
|
|
21
|
-
# query - A Hash with the query options passed to the server to get the tables.
|
|
22
|
-
#
|
|
23
|
-
# Returns an instance of Azure::Tables::EntitiesCollection.
|
|
24
|
-
def self.from_entries(entries, query = {}, service = Azure::Tables)
|
|
25
|
-
collection = self.new(query, service)
|
|
26
|
-
|
|
27
|
-
entries.each do |entry|
|
|
28
|
-
collection << Table.from_entry(entry)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
collection
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Public: Set continuation tokens for this collection
|
|
35
|
-
def continuation_token(next_table_name)
|
|
36
|
-
@next_table_name = next_table_name
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Public: Indicates if the collection is a paginated result.
|
|
40
|
-
# http://msdn.microsoft.com/en-us/library/windowsazure/dd135718
|
|
41
|
-
#
|
|
42
|
-
# Returs boolean.
|
|
43
|
-
def paginated?
|
|
44
|
-
@next_table_name ? true : false
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Public: Returns continuation results if exists.
|
|
48
|
-
#
|
|
49
|
-
# Returns an instance of Azure::Tables::TablesCollection
|
|
50
|
-
def next
|
|
51
|
-
return nil if !paginated?
|
|
52
|
-
|
|
53
|
-
query = @query.merge({
|
|
54
|
-
"NextTableName" => @next_table_name
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
@service.all(query)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
data/lib/azure/tables/types.rb
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
require "time"
|
|
2
|
-
require "date"
|
|
3
|
-
require "delegate"
|
|
4
|
-
|
|
5
|
-
module Azure
|
|
6
|
-
module Tables
|
|
7
|
-
module Types
|
|
8
|
-
# Public: Get the type of an object.
|
|
9
|
-
#
|
|
10
|
-
# value - An Object.
|
|
11
|
-
#
|
|
12
|
-
# Returns a String.
|
|
13
|
-
def self.type_of(value)
|
|
14
|
-
case value
|
|
15
|
-
when Float
|
|
16
|
-
"Edm.Double"
|
|
17
|
-
when Date, Time, DateTime
|
|
18
|
-
"Edm.DateTime"
|
|
19
|
-
when Integer
|
|
20
|
-
value.abs < 2**31 ? "Edm.Int32" : "Edm.Int64"
|
|
21
|
-
when TrueClass, FalseClass
|
|
22
|
-
"Edm.Boolean"
|
|
23
|
-
when GUID
|
|
24
|
-
"Edm.Guid"
|
|
25
|
-
else
|
|
26
|
-
"Edm.String"
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Public: Convert a raw value (as a String) into an object of the proper
|
|
31
|
-
# type.
|
|
32
|
-
#
|
|
33
|
-
# value - A String serialization of an object.
|
|
34
|
-
# type - A String with the Edm datatype.
|
|
35
|
-
#
|
|
36
|
-
# Returns an Object.
|
|
37
|
-
def self.cast(serialized, type)
|
|
38
|
-
case type
|
|
39
|
-
when "Edm.Double"
|
|
40
|
-
Float(serialized)
|
|
41
|
-
when "Edm.DateTime"
|
|
42
|
-
Time.parse(serialized)
|
|
43
|
-
when "Edm.Int32", "Edm.Int64"
|
|
44
|
-
Integer(serialized)
|
|
45
|
-
when "Edm.Boolean"
|
|
46
|
-
/true/i === serialized
|
|
47
|
-
else
|
|
48
|
-
serialized.to_s
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Public: Wrapper around strings to represent GUIDs in the Azure Platform.
|
|
54
|
-
#
|
|
55
|
-
# Example
|
|
56
|
-
#
|
|
57
|
-
# entity = Azure::Tables::Entity.new(
|
|
58
|
-
# "PartitionKey" => "part1",
|
|
59
|
-
# "RowKey" => "row1",
|
|
60
|
-
# "Id" => Azure::Tables::GUID.new("123456-123123123-123123")
|
|
61
|
-
# )
|
|
62
|
-
class GUID < SimpleDelegator
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|