class Azure::Storage::Table::TableService

Private Class Methods

create(options = {}, &block) click to toggle source

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

  • :ssl_version - Symbol. The ssl version to be used, sample: :TLSv1_1, :TLSv1_2, for the details, see github.com/ruby/openssl/blob/master/lib/openssl/ssl.rb

  • :ssl_min_version - Symbol. The min ssl version supported, only supported in Ruby 2.5+

  • :ssl_max_version - Symbol. The max ssl version supported, only supported in Ruby 2.5+

  • :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

@return [Azure::Storage::Table::TableService]

# File lib/azure/storage/table/table_service.rb, line 76
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) click to toggle source

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.

@return [Azure::Storage::Table::TableService]

# File lib/azure/storage/table/table_service.rb, line 89
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) click to toggle source

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

Attributes

@return [Azure::Storage::Table::TableService]

# File lib/azure/storage/table/table_service.rb, line 109
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) click to toggle source

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

@return [Azure::Storage::Table::TableService]

# File lib/azure/storage/table/table_service.rb, line 97
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
new(options = {}, &block) click to toggle source

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

Calls superclass method
# File lib/azure/storage/table/table_service.rb, line 154
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.storage_account_name, client_config.storage_access_key)
  signer.api_ver = @api_version if signer.is_a? Azure::Storage::Common::Core::Auth::SharedAccessSignatureSigner
  super(signer, client_config.storage_account_name, service_options, &block)
  @storage_service_host[:primary] = client.storage_table_host
  @storage_service_host[:secondary] = client.storage_table_host true
end

Private Instance Methods

call(method, uri, body = nil, headers = {}, options = {}, is_batch = false) click to toggle source
Calls superclass method
# File lib/azure/storage/table/table_service.rb, line 761
def call(method, uri, body = nil, headers = {}, options = {}, is_batch = false)
  headers["x-ms-version"] = @api_version ? @api_version : Default::STG_VERSION unless headers["x-ms-version"]
  headers["User-Agent"] = @user_agent_prefix ? "#{@user_agent_prefix}; #{Default::USER_AGENT}" : Default::USER_AGENT
  # Add JSON Content-Type header if is_batch is false because default is Atom.
  headers[Azure::Storage::Common::HeaderConstants::CONTENT_TYPE] = Azure::Storage::Common::HeaderConstants::JSON_CONTENT_TYPE_VALUE unless is_batch
  headers[Azure::Storage::Common::HeaderConstants::DATA_SERVICE_VERSION] = TableConstants::DEFAULT_DATA_SERVICE_VERSION
  super(method, uri, body, headers, options)
end
collection_uri(query = {}, options = {}) click to toggle source

Protected: Generate the URI for the collection of tables.

Returns a URI

# File lib/azure/storage/table/table_service.rb, line 675
def collection_uri(query = {}, options = {})
  generate_uri("Tables", query, options)
end
create_table(table_name, options = {}) click to toggle source

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

@return [nil] on success

# File lib/azure/storage/table/table_service.rb, line 191
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 603
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 219
def delete_table(table_name, options = {})
  call(:delete, table_uri(table_name, new_query(options)), nil, {}, options)
  nil
end
encodeODataUriValue(value) click to toggle source
# File lib/azure/storage/table/table_service.rb, line 743
def encodeODataUriValue(value)
  # Replace each single quote (') with double single quotes ('') not double
  # quotes (")
  value = value.gsub("'", "''")

  # Encode the special URL characters
  value = URI.escape(value)

  value
end
encodeODataUriValues(values) click to toggle source
# File lib/azure/storage/table/table_service.rb, line 734
def encodeODataUriValues(values)
  new_values = []
  values.each do |value|
    new_values.push encodeODataUriValue(value)
  end
  new_values
end
entities_uri(table_name, partition_key = nil, row_key = nil, query = {}, options = {}) click to toggle source

Public: Generate the URI for an entity or group of entities in a table. If both the 'partition_key' and 'row_key' are specified, then the URI will match the entity under those specific keys.

Attributes

  • table_name - The table name

  • partition_key - The desired partition key (optional)

  • row_key - The desired row key (optional)

Returns a URI

# File lib/azure/storage/table/table_service.rb, line 704
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 = {}) click to toggle source

Public: Executes a batch of operations.

Attributes

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

# File lib/azure/storage/table/table_service.rb, line 630
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 664
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 241
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 315
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 382
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 555
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 578
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 518
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
new_query(options = {}) click to toggle source
# File lib/azure/storage/table/table_service.rb, line 771
def new_query(options = {})
  options[:timeout].nil? ? {} : { Azure::Storage::Common::QueryStringConstants::TIMEOUT => options[:timeout].to_s }
end
query_entities(table_name, options = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 425
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 276
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
raise_with_response(e, response) click to toggle source
# File lib/azure/storage/table/table_service.rb, line 755
def raise_with_response(e, response)
  raise e if response.nil?
  raise "Response header: #{response.headers.inspect}\nResponse body: #{response.body.inspect}\n#{e.inspect}\n#{e.backtrace.join("\n")}"
end
set_table_acl(table_name, options = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 347
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 = {}) click to toggle source

Public: Generate the URI for a specific table.

Attributes

  • name - The table name. If this is a URI, we just return this

Returns a URI

# File lib/azure/storage/table/table_service.rb, line 687
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 = {}) click to toggle source

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

# File lib/azure/storage/table/table_service.rb, line 477
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