Class: Azure::Storage::Blob::BlobService
- Inherits:
-
StorageService
- Object
- Azure::Storage::Blob::BlobService
- Includes:
- Azure::Storage::Blob, Container, Common::Core::Utility
- Defined in:
- lib/azure/storage/blob/blob_service.rb
Class Method Summary collapse
-
.create(options = {}, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService].
-
.create_development(proxy_uri = nil, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] with Storage Emulator.
-
.create_from_connection_string(connection_string, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] from Environment Variables.
-
.create_from_env(&block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] from Environment Variables.
Instance Method Summary collapse
- #call(method, uri, body = nil, headers = {}, options = {}) ⇒ Object
-
#get_user_delegation_key(start, expiry) ⇒ Object
Public: Obtain a user delegation key for the purpose of signing SAS tokens.
-
#initialize(options = {}, &block) ⇒ BlobService
constructor
Public: Initializes an instance of [Azure::Storage::Blob::BlobService].
-
#list_containers(options = {}) ⇒ Object
Public: Get a list of Containers from the server.
Methods included from Container
#acquire_container_lease, #break_container_lease, #change_container_lease, #create_container, #delete_container, #get_container_acl, #get_container_metadata, #get_container_properties, #list_blobs, #release_container_lease, #renew_container_lease, #set_container_acl, #set_container_metadata
Methods included from Azure::Storage::Blob
#abort_copy_blob, #acquire_blob_lease, #append_blob_block, #break_blob_lease, #change_blob_lease, #clear_blob_pages, #commit_blob_blocks, #copy_blob, #copy_blob_from_uri, #create_append_blob, #create_append_blob_from_content, #create_blob_snapshot, #create_block_blob, #create_page_blob, #create_page_blob_from_content, #delete_blob, #get_blob, #get_blob_metadata, #get_blob_properties, #incremental_copy_blob, #list_blob_blocks, #list_page_blob_ranges, #put_blob_block, #put_blob_pages, #release_blob_lease, #renew_blob_lease, #resize_page_blob, #set_blob_metadata, #set_blob_properties, #set_sequence_number
Constructor Details
#initialize(options = {}, &block) ⇒ BlobService
Public: Initializes an instance of [Azure::Storage::Blob::BlobService]
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_blob_host
- String. Specified Blob 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 -
: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 -
: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 Blob: only
:storage_blob_host
, if it is to only access blobs 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
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/azure/storage/blob/blob_service.rb', line 161 def initialize( = {}, &block) = .clone client_config = [:client] ||= Azure::Storage::Common::Client::create(, &block) @user_agent_prefix = [:user_agent_prefix] if [:user_agent_prefix] @api_version = [:api_version] || Azure::Storage::Blob::Default::STG_VERSION signer = [:signer] || client_config.signer || Azure::Storage::Common::Core::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, , &block) @storage_service_host[:primary] = client.storage_blob_host @storage_service_host[:secondary] = client.storage_blob_host true end |
Class Method Details
.create(options = {}, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService]
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_blob_host
- String. Specified Blob 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 Blob: only
:storage_blob_host
, if it is to only access blobs 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
80 81 82 83 84 |
# File 'lib/azure/storage/blob/blob_service.rb', line 80 def create( = {}, &block) = { client: Azure::Storage::Common::Client::create(, &block), api_version: Azure::Storage::Blob::Default::STG_VERSION } [:user_agent_prefix] = [:user_agent_prefix] if [:user_agent_prefix] Azure::Storage::Blob::BlobService.new(, &block) end |
.create_development(proxy_uri = nil, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] with Storage Emulator
Attributes
-
proxy_uri
- String. Used with:use_development_storage
if emulator is hosted other than localhost.
93 94 95 96 |
# File 'lib/azure/storage/blob/blob_service.rb', line 93 def create_development(proxy_uri = nil, &block) = { client: Azure::Storage::Common::Client::create_development(proxy_uri, &block), api_version: Azure::Storage::Blob::Default::STG_VERSION } Azure::Storage::Blob::BlobService.new(, &block) end |
.create_from_connection_string(connection_string, &block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] from Environment Variables
Attributes
-
connection_string
- String. Please refer to azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/.
113 114 115 116 |
# File 'lib/azure/storage/blob/blob_service.rb', line 113 def create_from_connection_string(connection_string, &block) = { client: Azure::Storage::Common::Client::create_from_connection_string(connection_string, &block), api_version: Azure::Storage::Blob::Default::STG_VERSION } Azure::Storage::Blob::BlobService.new(, &block) end |
.create_from_env(&block) ⇒ Azure::Storage::Blob::BlobService
Public: Creates an instance of [Azure::Storage::Blob::BlobService] from Environment Variables
101 102 103 104 |
# File 'lib/azure/storage/blob/blob_service.rb', line 101 def create_from_env(&block) = { client: Azure::Storage::Common::Client::create_from_env(&block), api_version: Azure::Storage::Blob::Default::STG_VERSION } Azure::Storage::Blob::BlobService.new(, &block) end |
Instance Method Details
#call(method, uri, body = nil, headers = {}, options = {}) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/azure/storage/blob/blob_service.rb', line 173 def call(method, uri, body = nil, headers = {}, = {}) content_type = get_or_apply_content_type(body, headers[Azure::Storage::Common::HeaderConstants::BLOB_CONTENT_TYPE]) headers[Azure::Storage::Common::HeaderConstants::BLOB_CONTENT_TYPE] = content_type if content_type headers["x-ms-version"] = @api_version ? @api_version : Default::STG_VERSION headers["User-Agent"] = @user_agent_prefix ? "#{@user_agent_prefix}; #{Default::USER_AGENT}" : Default::USER_AGENT response = super # Force the response.body to the content charset of specified in the header. # Content-Type is echo'd back for the blob and is used to store the encoding of the octet stream if !response.nil? && !response.body.nil? && response.headers["Content-Type"] charset = parse_charset_from_content_type(response.headers["Content-Type"]) response.body.force_encoding(charset) if charset && charset.length > 0 end response end |
#get_user_delegation_key(start, expiry) ⇒ Object
Public: Obtain a user delegation key for the purpose of signing SAS tokens.
Attributes
-
start
- Time. The start time for the user delegation SAS. -
expiry
- Time. The expiry time of user delegation SAS.
See: docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key
NOTE: A token credential must be present on the service object for this request to succeed. The start and expiry times must be within 7 days of the current time.
Returns an Azure::Storage::Common::UserDelegationKey
271 272 273 274 275 276 277 278 279 280 281 282 |
# File 'lib/azure/storage/blob/blob_service.rb', line 271 def get_user_delegation_key(start, expiry) max_delegation_time = Time.now + BlobConstants::MAX_USER_DELEGATION_KEY_SECONDS raise ArgumentError, "Start time must be before #{max_delegation_time}" if start > max_delegation_time raise ArgumentError, "Expiry time must be before #{max_delegation_time}" if expiry > max_delegation_time raise ArgumentError, "Start time must be before expiry time" if start >= expiry body = Serialization.key_info_to_xml(start, expiry) response = call(:post, user_delegation_key_uri, body) Serialization.user_delegation_key_from_xml(response.body) end |
#list_containers(options = {}) ⇒ Object
Public: Get a list of Containers from the server.
Attributes
-
options
- Hash. Optional parameters.
Options
Accepted key/value pairs in options parameter are:
-
:prefix
- String. Filters the results to return only containerswhose name begins with the specified prefix. (optional)
-
:marker
- String. An identifier the specifies the portion of thelist to be returned. This value comes from the property Azure::Storage::Common::EnumerationResults.continuation_token when there are more containers available than were returned. The marker value may then be used here to request the next set of list items. (optional)
-
:max_results
- Integer. Specifies the maximum number of containers to return.If max_results is not specified, or is a value greater than 5,000, the server will return up to 5,000 items. If it is set to a value less than or equal to zero, the server will return status code 400 (Bad Request). (optional)
-
:metadata
- Boolean. Specifies whether or not to return the container metadata.(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 recordedin the analytics logs when storage analytics logging is enabled.
-
:location_mode
- LocationMode. Specifies the location mode used to decidewhich location the request should be sent to.
See: msdn.microsoft.com/en-us/library/azure/dd179352.aspx
NOTE: Metadata requested with the :metadata parameter must have been stored in accordance with the naming restrictions imposed by the 2009-09-19 version of the Blob service. Beginning with that version, all metadata names must adhere to the naming conventions for C# identifiers. See: msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx
Any metadata with invalid names which were previously stored, will be returned with the key “x-ms-invalid-name” in the metadata hash. This may contain multiple values and be an Array (vs a String if it only contains a single value).
Returns an Azure::Storage::Common::EnumerationResults
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/azure/storage/blob/blob_service.rb', line 240 def list_containers( = {}) query = {} if StorageService.with_query query, "prefix", [:prefix] StorageService.with_query query, "marker", [:marker] StorageService.with_query query, "maxresults", [:max_results].to_s if [:max_results] StorageService.with_query query, "include", "metadata" if [:metadata] == true StorageService.with_query query, "timeout", [:timeout].to_s if [:timeout] end [:request_location_mode] = Azure::Storage::Common::RequestLocationMode::PRIMARY_OR_SECONDARY uri = containers_uri(query, ) response = call(:get, uri, nil, {}, ) Serialization.container_enumeration_results_from_xml(response.body) end |