Class: Azure::Storage::Table::TableService

Inherits:
StorageService
  • Object
show all
Defined in:
lib/azure/storage/table/table_service.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ TableService

Public: Initializes an instance of [Azure::Storage::Table::TableService]

Attributes

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :use_development_storage - TrueClass|FalseClass. Whether to use storage emulator.

  • :development_storage_proxy_uri - String. Used with :use_development_storage if emulator is hosted other than localhost.

  • :storage_connection_string - String. The storage connection string.

  • :storage_account_name - String. The name of the storage account.

  • :storage_access_key - Base64 String. The access key of the storage account.

  • :storage_sas_token - String. The signed access signature for the storage account or one of its service.

  • :storage_table_host - String. Specified Table serivce endpoint or hostname

  • :storage_dns_suffix - String. The suffix of a regional Storage Serivce, to

  • :default_endpoints_protocol - String. http or https

  • :use_path_style_uri - String. Whether use path style URI for specified endpoints

  • :ca_file - String. File path of the CA file if having issue with SSL

  • :user_agent_prefix - String. The user agent prefix that can identify the application calls the library

  • :client - Azure::Storage::Common::Client. The common client used to initalize the service.

The valid set of options include:

  • Storage Emulator: :use_development_storage required, :development_storage_proxy_uri optionally

  • Storage account name and key: :storage_account_name and :storage_access_key required, set :storage_dns_suffix necessarily

  • Storage account name and SAS token: :storage_account_name and :storage_sas_token required, set :storage_dns_suffix necessarily

  • Specified hosts and SAS token: At least one of the service host and SAS token. It’s up to user to ensure the SAS token is suitable for the serivce

  • Azure::Storage::Common::Client: The common client used to initalize the service. This client can be initalized and used repeatedly.

  • Anonymous Table: only :storage_table_host, if it is to only access tables within a container

Additional notes:

  • Specified hosts can be set when use account name with access key or sas token

  • :default_endpoints_protocol can be set if the scheme is not specified in hosts

  • Storage emulator always use path style URI

  • :ca_file is independent.

When empty options are given, it will try to read settings from Environment Variables. Refer to [Azure::Storage::Common::ClientOptions.env_vars_mapping] for the mapping relationship



151
152
153
154
155
156
157
158
159
160
161
# File 'lib/azure/storage/table/table_service.rb', line 151

def initialize(options = {}, &block)
  service_options = options.clone
  client_config = service_options[:client] ||= Azure::Storage::Common::Client::create(service_options, &block)
  @user_agent_prefix = service_options[:user_agent_prefix] if service_options[:user_agent_prefix]
  @api_version = service_options[:api_version] || Azure::Storage::Table::Default::STG_VERSION
  signer = service_options[:signer] || client_config.signer || Auth::SharedKey.new(client_config., client_config.storage_access_key)
  signer.api_ver = @api_version if signer.is_a? Azure::Storage::Common::Core::Auth::SharedAccessSignatureSigner
  super(signer, client_config., service_options, &block)
  @storage_service_host[:primary] = client.storage_table_host
  @storage_service_host[:secondary] = client.storage_table_host true
end

Class Method Details

.create(options = {}, &block) ⇒ Azure::Storage::Table::TableService

Public: Creates an instance of [Azure::Storage::Table::TableService]

Attributes

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :use_development_storage - TrueClass|FalseClass. Whether to use storage emulator.

  • :development_storage_proxy_uri - String. Used with :use_development_storage if emulator is hosted other than localhost.

  • :storage_account_name - String. The name of the storage account.

  • :storage_access_key - Base64 String. The access key of the storage account.

  • :storage_sas_token - String. The signed access signature for the storage account or one of its service.

  • :storage_table_host - String. Specified Table service endpoint or hostname

  • :storage_dns_suffix - String. The suffix of a regional Storage Service, to

  • :default_endpoints_protocol - String. http or https

  • :use_path_style_uri - String. Whether use path style URI for specified endpoints

  • :ca_file - String. File path of the CA file if having issue with SSL

  • :user_agent_prefix - String. The user agent prefix that can identify the application calls the library

The valid set of options include:

  • Storage Emulator: :use_development_storage required, :development_storage_proxy_uri optionally

  • Storage account name and key: :storage_account_name and :storage_access_key required, set :storage_dns_suffix necessarily

  • Storage account name and SAS token: :storage_account_name and :storage_sas_token required, set :storage_dns_suffix necessarily

  • Specified hosts and SAS token: At least one of the service host and SAS token. It’s up to user to ensure the SAS token is suitable for the serivce

  • Anonymous Table: only :storage_table_host, if it is to only access tables within a container

Additional notes:

  • Specified hosts can be set when use account name with access key or sas token

  • :default_endpoints_protocol can be set if the scheme is not specified in hosts

  • Storage emulator always use path style URI

  • :ca_file is independent.

When empty options are given, it will try to read settings from Environment Variables. Refer to [Azure::Storage::Common::ClientOptions.env_vars_mapping] for the mapping relationship



73
74
75
76
77
# File 'lib/azure/storage/table/table_service.rb', line 73

def create(options = {}, &block)
  service_options = { client: Azure::Storage::Common::Client::create(options, &block), api_version: Azure::Storage::Table::Default::STG_VERSION }
  service_options[:user_agent_prefix] = options[:user_agent_prefix] if options[:user_agent_prefix]
  Azure::Storage::Table::TableService.new(service_options, &block)
end

.create_development(proxy_uri = nil, &block) ⇒ Azure::Storage::Table::TableService

Public: Creates an instance of [Azure::Storage::Table::TableService] with Storage Emulator

Attributes

  • proxy_uri - String. Used with :use_development_storage if emulator is hosted other than localhost.



86
87
88
89
# File 'lib/azure/storage/table/table_service.rb', line 86

def create_development(proxy_uri = nil, &block)
  service_options = { client: Azure::Storage::Common::Client::create_development(proxy_uri, &block), api_version: Azure::Storage::Table::Default::STG_VERSION }
  Azure::Storage::Table::TableService.new(service_options, &block)
end

.create_from_connection_string(connection_string, &block) ⇒ Azure::Storage::Table::TableService

Public: Creates an instance of [Azure::Storage::Table::TableService] from Environment Variables

Attributes



106
107
108
109
# File 'lib/azure/storage/table/table_service.rb', line 106

def create_from_connection_string(connection_string, &block)
  service_options = { client: Azure::Storage::Common::Client::create_from_connection_string(connection_string, &block), api_version: Azure::Storage::Table::Default::STG_VERSION }
  Azure::Storage::Table::TableService.new(service_options, &block)
end

.create_from_env(&block) ⇒ Azure::Storage::Table::TableService

Public: Creates an instance of [Azure::Storage::Table::TableService] from Environment Variables



94
95
96
97
# File 'lib/azure/storage/table/table_service.rb', line 94

def create_from_env(&block)
  service_options = { client: Azure::Storage::Common::Client::create_from_env(&block), api_version: Azure::Storage::Table::Default::STG_VERSION }
  Azure::Storage::Table::TableService.new(service_options, &block)
end

Instance Method Details

#create_table(table_name, options = {}) ⇒ nil

Public: Creates new table in the storage account

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :accept - String. Specifies the accepted content-type of the response payload. Possible values are:

    :no_meta
    :min_meta
    :full_meta
    
  • :prefer - String. Specifies whether the response should include the inserted entity in the payload. Possible values are:

    Azure::Storage::Common::HeaderConstants::PREFER_CONTENT
    Azure::Storage::Common::HeaderConstants::PREFER_NO_CONTENT
    

See msdn.microsoft.com/en-us/library/azure/dd135729

Returns:

  • (nil)

    on success



188
189
190
191
192
193
194
195
196
197
# File 'lib/azure/storage/table/table_service.rb', line 188

def create_table(table_name, options = {})
  headers = {
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(options[:accept]),
  }
  headers[Azure::Storage::Common::HeaderConstants::PREFER] = options[:prefer] unless options[:prefer].nil?
  body = Serialization.hash_to_json("TableName" => table_name)

  call(:post, collection_uri(new_query(options)), body, headers, options)
  nil
end

#delete_entity(table_name, partition_key, row_key, options = {}) ⇒ Object

Public: Deletes an existing entity in the table.

Attributes

  • table_name - String. The table name

  • partition_key - String. The partition key

  • row_key - String. The row key

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :if_match - String. A matching condition which is required for update (optional, Default=“*”)

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/dd135727

Returns nil on success



600
601
602
603
604
605
606
# File 'lib/azure/storage/table/table_service.rb', line 600

def delete_entity(table_name, partition_key, row_key, options = {})
  if_match = "*"
  if_match = options[:if_match] if options[:if_match]

  call(:delete, entities_uri(table_name, partition_key, row_key, new_query(options)), nil, { "If-Match" => if_match }, options)
  nil
end

#delete_table(table_name, options = {}) ⇒ Object

Public: Deletes the specified table and any data it contains.

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/dd179387

Returns nil on success



216
217
218
219
# File 'lib/azure/storage/table/table_service.rb', line 216

def delete_table(table_name, options = {})
  call(:delete, table_uri(table_name, new_query(options)), nil, {}, options)
  nil
end

#entities_uri(table_name, partition_key = nil, row_key = nil, query = {}, options = {}) ⇒ Object



701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
# File 'lib/azure/storage/table/table_service.rb', line 701

def entities_uri(table_name, partition_key = nil, row_key = nil, query = {}, options = {})
  return table_name if table_name.kind_of? ::URI

  path = if partition_key && row_key
    "%s(PartitionKey='%s',RowKey='%s')" % [
      table_name.encode("UTF-8"), encodeODataUriValue(partition_key.encode("UTF-8")), encodeODataUriValue(row_key.encode("UTF-8"))
    ]
         else
           "%s()" % table_name.encode("UTF-8")
         end

  uri = generate_uri(path, query, options)
  qs = []
  if query
    query.each do | key, val |
      key = key.encode("UTF-8")
      val = val.encode("UTF-8")

      if key[0] == "$"
        qs.push "#{key}#{::URI.encode_www_form("" => val)}"
      else
        qs.push ::URI.encode_www_form(key => val)
      end
    end
  end
  uri.query = qs.join "&" if qs.length > 0
  uri
end

#execute_batch(batch, options = {}) ⇒ Object

Public: Executes a batch of operations.

Attributes

  • batch - The Azure::Storage::Table::Batch instance to execute.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    

See msdn.microsoft.com/en-us/library/azure/dd894038

Returns an array of results, one for each operation in the batch



627
628
629
630
631
632
633
634
635
636
637
638
639
640
# File 'lib/azure/storage/table/table_service.rb', line 627

def execute_batch(batch, options = {})
  headers = {
    Azure::Storage::Common::HeaderConstants::CONTENT_TYPE => "multipart/mixed; boundary=#{batch.batch_id}",
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(options[:accept]),
    "Accept-Charset" => "UTF-8"
  }

  body = batch.to_body(self)
  options[:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY
  response = call(:post, generate_uri("/$batch", new_query(options), options), body, headers, options, true)
  batch.parse_response(response)
rescue => e
  raise_with_response(e, response)
end

#get_entity(table_name, partition_key, row_key, options = {}) ⇒ Object

Public: Gets an existing entity in the table.

Attributes

  • table_name - String. The table name

  • partition_key - String. The partition key

  • row_key - String. The row key

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    

Returns an Azure::Storage::Table::Entity instance on success



661
662
663
664
665
666
# File 'lib/azure/storage/table/table_service.rb', line 661

def get_entity(table_name, partition_key, row_key, options = {})
  options[:partition_key] = partition_key
  options[:row_key] = row_key
  results = query_entities(table_name, options)
  results.length > 0 ? results[0] : nil
end

#get_table(table_name, options = {}) ⇒ Object

Public: Gets the table.

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    

Returns the last updated time for the table



238
239
240
241
242
243
244
245
246
247
# File 'lib/azure/storage/table/table_service.rb', line 238

def get_table(table_name, options = {})
  headers = {
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(:full_meta),
  }
  options[:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY
  response = call(:get, table_uri(table_name, new_query(options), options), nil, headers, options)
  Serialization.table_entries_from_json(response.body)
rescue => e
  raise_with_response(e, response)
end

#get_table_acl(table_name, options = {}) ⇒ Object

Public: Gets the access control list (ACL) for the table.

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    

See msdn.microsoft.com/en-us/library/azure/jj159100

Returns a list of Azure::Storage::Entity::SignedIdentifier instances



312
313
314
315
316
317
318
319
320
321
322
323
324
# File 'lib/azure/storage/table/table_service.rb', line 312

def get_table_acl(table_name, options = {})
  query = new_query(options)
  query[Azure::Storage::Common::QueryStringConstants::COMP] = Azure::Storage::Common::QueryStringConstants::ACL

  options[:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY
  response = call(:get, generate_uri(table_name, query, options), nil, { "x-ms-version" => "2012-02-12" }, options)

  signed_identifiers = []
  signed_identifiers = Serialization.signed_identifiers_from_xml response.body unless response.body == nil || response.body.length < 1
  signed_identifiers
rescue => e
  raise_with_response(e, response)
end

#insert_entity(table_name, entity_values, options = {}) ⇒ Object

Public: Inserts new entity to the table.

Attributes

  • table_name - String. The table name

  • entity_values - Hash. A hash of the name/value pairs for the entity.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :accept - String. Specifies the accepted content-type of the response payload. Possible values are:

    :no_meta
    :min_meta
    :full_meta
    

See msdn.microsoft.com/en-us/library/azure/dd179433

Returns a Azure::Storage::Entity::Table::Entity



379
380
381
382
383
384
385
386
387
388
389
390
391
# File 'lib/azure/storage/table/table_service.rb', line 379

def insert_entity(table_name, entity_values, options = {})
  body = Serialization.hash_to_json(entity_values)
  #time = EdmType::to_edm_time(Time.now)
  headers = {
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(options[:accept])
  }
  response = call(:post, entities_uri(table_name, nil, nil, new_query(options)), body, headers, options)
  result = Serialization.entity_from_json(response.body)
  result.etag = response.headers[Azure::Storage::Common::HeaderConstants::ETAG] if result.etag.nil?
  result
rescue => e
  raise_with_response(e, response)
end

#insert_or_merge_entity(table_name, entity_values, options = {}) ⇒ Object

Public: Inserts or updates an existing entity within a table by merging new property values into the entity.

Attributes

  • table_name - String. The table name

  • entity_values - Hash. A hash of the name/value pairs for the entity.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/hh452241

Returns the ETag for the entity on success



552
553
554
555
# File 'lib/azure/storage/table/table_service.rb', line 552

def insert_or_merge_entity(table_name, entity_values, options = {})
  options[:create_if_not_exists] = true
  merge_entity(table_name, entity_values, options)
end

#insert_or_replace_entity(table_name, entity_values, options = {}) ⇒ Object

Public: Inserts or updates a new entity into a table.

Attributes

  • table_name - String. The table name

  • entity_values - Hash. A hash of the name/value pairs for the entity.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/hh452242

Returns the ETag for the entity on success



575
576
577
578
# File 'lib/azure/storage/table/table_service.rb', line 575

def insert_or_replace_entity(table_name, entity_values, options = {})
  options[:create_if_not_exists] = true
  update_entity(table_name, entity_values, options)
end

#merge_entity(table_name, entity_values, options = {}) ⇒ Object

Public: Updates an existing entity by updating the entity’s properties. This operation does not replace the existing entity, as the update_entity operation does.

Attributes

  • table_name - String. The table name

  • entity_values - Hash. A hash of the name/value pairs for the entity.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :if_match - String. A matching condition which is required for update (optional, Default=“*”)

  • :create_if_not_exists - Boolean. If true, and partition_key and row_key do not reference and existing entity,

    that entity will be inserted. If false, the operation will fail. (optional, Default=false)
    
  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/dd179392

Returns the ETag for the entity on success



515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
# File 'lib/azure/storage/table/table_service.rb', line 515

def merge_entity(table_name, entity_values, options = {})
  if_match = "*"
  if_match = options[:if_match] if options[:if_match]

  uri = entities_uri(table_name,
    entity_values[:PartitionKey] || entity_values["PartitionKey"],
    entity_values[:RowKey] || entity_values["RowKey"], new_query(options))

  headers = { "X-HTTP-Method" => "MERGE" }
  headers["If-Match"] = if_match || "*" unless options[:create_if_not_exists]

  body = Serialization.hash_to_json(entity_values)

  response = call(:post, uri, body, headers, options)
  response.headers["etag"]
rescue => e
  raise_with_response(e, response)
end

#query_entities(table_name, options = {}) ⇒ Object

Public: Queries entities for the given table name

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :partition_key - String. The partition key (optional)

  • :row_key - String. The row key (optional)

  • :select - Array. An array of property names to return (optional)

  • :filter - String. A filter expression (optional)

  • :top - Integer. A limit for the number of results returned (optional)

  • :continuation_token - Hash. The continuation token.

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    
  • :accept - String. Specifies the accepted content-type of the response payload. Possible values are:

    :no_meta
    :min_meta
    :full_meta
    

See msdn.microsoft.com/en-us/library/azure/dd179421

Returns an array with an extra continuation_token property on success



422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
# File 'lib/azure/storage/table/table_service.rb', line 422

def query_entities(table_name, options = {})
  query = new_query(options)
  query[Azure::Storage::Common::QueryStringConstants::SELECT] = options[:select].join "," if options[:select]
  query[Azure::Storage::Common::QueryStringConstants::FILTER] = options[:filter] if options[:filter]
  query[Azure::Storage::Common::QueryStringConstants::TOP] = options[:top].to_s if options[:top] unless options[:partition_key] && options[:row_key]
  query[Azure::Storage::Common::QueryStringConstants::NEXT_PARTITION_KEY] = options[:continuation_token][:next_partition_key] if options[:continuation_token] && options[:continuation_token][:next_partition_key]
  query[Azure::Storage::Common::QueryStringConstants::NEXT_ROW_KEY] = options[:continuation_token][:next_row_key] if options[:continuation_token] && options[:continuation_token][:next_row_key]

  options[:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY
  uri = entities_uri(table_name, options[:partition_key], options[:row_key], query, options)

  headers = {
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(options[:accept])
  }

  response = call(:get, uri, nil, headers, options)

  entities = Azure::Storage::Common::Service::EnumerationResults.new.push(*Serialization.entities_from_json(response.body))

  entities.continuation_token = nil
  entities.continuation_token = {
    next_partition_key: response.headers[TableConstants::CONTINUATION_NEXT_PARTITION_KEY],
    next_row_key: response.headers[TableConstants::CONTINUATION_NEXT_ROW_KEY]
  } if response.headers[TableConstants::CONTINUATION_NEXT_PARTITION_KEY]

  entities
rescue => e
  raise_with_response(e, response)
end

#query_tables(options = {}) ⇒ Object

Public: Gets a list of all tables on the account.

Attributes

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :next_table_token - String. A token used to enumerate the next page of results, when the list of tables is

    larger than a single operation can return at once. (optional)
    
  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    
  • :location_mode - LocationMode. Specifies the location mode used to decide

    which location the request should be sent to.
    
  • :accept - String. Specifies the accepted content-type of the response payload. Possible values are:

    :no_meta
    :min_meta
    :full_meta
    

See msdn.microsoft.com/en-us/library/azure/dd179405

Returns an array with an extra continuation_token property on success



273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
# File 'lib/azure/storage/table/table_service.rb', line 273

def query_tables(options = {})
  query = new_query(options)
  query[TableConstants::NEXT_TABLE_NAME] = options[:next_table_token] if options[:next_table_token]

  options[:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY
  uri = collection_uri(query, options)

  headers = {
    Azure::Storage::Common::HeaderConstants::ACCEPT => Serialization.get_accept_string(options[:accept]),
  }

  response = call(:get, uri, nil, headers, options)
  entries = Serialization.table_entries_from_json(response.body) || []
  values = Azure::Storage::Common::Service::EnumerationResults.new(entries)
  values.continuation_token = response.headers[TableConstants::CONTINUATION_NEXT_TABLE_NAME]
  values
rescue => e
  raise_with_response(e, response)
end

#set_table_acl(table_name, options = {}) ⇒ Object

Public: Sets the access control list (ACL) for the table.

Attributes

  • table_name - String. The table name

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :signed_identifiers - Array. A list of Azure::Storage::Entity::SignedIdentifier instances

  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/jj159102

Returns nil on success



344
345
346
347
348
349
350
351
352
353
354
# File 'lib/azure/storage/table/table_service.rb', line 344

def set_table_acl(table_name, options = {})
  query = new_query(options)
  query[Azure::Storage::Common::QueryStringConstants::COMP] = Azure::Storage::Common::QueryStringConstants::ACL

  uri = generate_uri(table_name, query)
  body = nil
  body = Serialization.signed_identifiers_to_xml options[:signed_identifiers] if options[:signed_identifiers] && options[:signed_identifiers].length > 0

  call(:put, uri, body, { "x-ms-version" => "2012-02-12" }, options)
  nil
end

#table_uri(name, query = {}, options = {}) ⇒ Object



684
685
686
687
# File 'lib/azure/storage/table/table_service.rb', line 684

def table_uri(name, query = {}, options = {})
  return name if name.kind_of? ::URI
  generate_uri("Tables('#{name}')", query, options)
end

#update_entity(table_name, entity_values, options = {}) ⇒ Object

Public: Updates an existing entity in a table. The Update Entity operation replaces the entire entity and can be used to remove properties.

Attributes

  • table_name - String. The table name

  • entity_values - Hash. A hash of the name/value pairs for the entity.

  • options - Hash. Optional parameters.

Options

Accepted key/value pairs in options parameter are:

  • :if_match - String. A matching condition which is required for update (optional, Default=“*”)

  • :create_if_not_exists - Boolean. If true, and partition_key and row_key do not reference and existing entity,

    that entity will be inserted. If false, the operation will fail. (optional, Default=false)
    
  • :timeout - Integer. A timeout in seconds.

  • :request_id - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded

    in the analytics logs when storage analytics logging is enabled.
    

See msdn.microsoft.com/en-us/library/azure/dd179427

Returns the ETag for the entity on success



474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
# File 'lib/azure/storage/table/table_service.rb', line 474

def update_entity(table_name, entity_values, options = {})
  if_match = "*"
  if_match = options[:if_match] if options[:if_match]

  uri = entities_uri(table_name,
    entity_values[:PartitionKey] || entity_values["PartitionKey"],
    entity_values[:RowKey] || entity_values["RowKey"], new_query(options))

  headers = {}
  headers["If-Match"] = if_match || "*" unless options[:create_if_not_exists]

  body = Serialization.hash_to_json(entity_values)

  response = call(:put, uri, body, headers, options)
  response.headers["etag"]
rescue => e
  raise_with_response(e, response)
end