lib/fog/azurerm/requests/storage/create_block_blob.rb in fog-azure-rm-0.1.1 vs lib/fog/azurerm/requests/storage/create_block_blob.rb in fog-azure-rm-0.1.2

- old
+ new

@@ -1,108 +1,108 @@ -module Fog - module Storage - class AzureRM - # This class provides the actual implementation for service calls. - class Real - def create_block_blob(container_name, blob_name, body, options = {}) - options[:request_id] = SecureRandom.uuid - msg = "create_block_blob #{blob_name} to the container #{container_name}. options: #{options}" - Fog::Logger.debug msg - - begin - if body.nil? - data = nil - elsif body.respond_to?(:read) - if body.respond_to?(:rewind) - begin - body.rewind - rescue - nil - end - end - data = body.read - else - data = Fog::Storage.parse_data(body) - options[:content_length] = data[:headers]['Content-Length'] - options[:content_type] = data[:headers]['Content-Type'] - data = data[:body] - end - - raise ArgumentError.new('The maximum size for a block blob created via create_block_blob is 64 MB.') if !data.nil? && Fog::Storage.get_body_size(data) > 64 * 1024 * 1024 - blob = @blob_client.create_block_blob(container_name, blob_name, data, options) - rescue Azure::Core::Http::HTTPError => ex - raise_azure_exception(ex, msg) - end - - if data.nil? - Fog::Logger.debug "Create a block blob #{blob_name} successfully." - else - Fog::Logger.debug "Upload a block blob #{blob_name} successfully." - end - blob - end - end - - # This class provides the mock implementation for unit tests. - class Mock - def create_block_blob(_container_name, _blob_name, body, _options = {}) - Fog::Logger.debug 'Blob created successfully.' - if body.nil? - { - 'name' => 'test_blob', - 'metadata' => {}, - 'properties' => { - 'last_modified' => 'Mon, 04 Jul 2016 02:50:20 GMT', - 'etag' => '0x8D3A3B5F017F52D', - 'lease_status' => nil, - 'lease_state' => nil, - 'content_length' => 0, - 'content_type' => 'application/octet-stream', - 'content_encoding' => nil, - 'content_language' => nil, - 'content_disposition' => nil, - 'content_md5' => nil, - 'cache_control' => nil, - 'sequence_number' => 0, - 'blob_type' => 'BlockBlob', - 'copy_id' => nil, - 'copy_status' => nil, - 'copy_source' => nil, - 'copy_progress' => nil, - 'copy_completion_time' => nil, - 'copy_status_description' => nil, - 'accept_ranges' => 0 - } - } - else - { - 'name' => 'test_blob', - 'metadata' => {}, - 'properties' => { - 'last_modified' => 'Mon, 04 Jul 2016 02:50:20 GMT', - 'etag' => '0x8D3A3B5F017F52D', - 'lease_status' => 'unlocked', - 'lease_state' => 'available', - 'content_length' => 4_194_304, - 'content_type' => 'application/octet-stream', - 'content_encoding' => nil, - 'content_language' => nil, - 'content_disposition' => nil, - 'content_md5' => 'tXAohIyxuu/t94Lp/ujeRw==', - 'cache_control' => nil, - 'sequence_number' => 0, - 'blob_type' => 'BlockBlob', - 'copy_id' => '095adc3b-e277-4c3d-97e0-0abca881f60c', - 'copy_status' => 'success', - 'copy_source' => 'https://testaccount.blob.core.windows.net/test_container/test_blob?snapshot=2016-02-04T08%3A35%3A50.3256874Z', - 'copy_progress' => '4194304/4194304', - 'copy_completion_time' => 'Thu, 04 Feb 2016 08:35:52 GMT', - 'copy_status_description' => nil, - 'accept_ranges' => 0 - } - } - end - end - end - end - end -end +module Fog + module Storage + class AzureRM + # This class provides the actual implementation for service calls. + class Real + def create_block_blob(container_name, blob_name, body, options = {}) + options[:request_id] = SecureRandom.uuid + msg = "create_block_blob #{blob_name} to the container #{container_name}. options: #{options}" + Fog::Logger.debug msg + + begin + if body.nil? + data = nil + elsif body.respond_to?(:read) + if body.respond_to?(:rewind) + begin + body.rewind + rescue + nil + end + end + data = body.read + else + data = Fog::Storage.parse_data(body) + options[:content_length] = data[:headers]['Content-Length'] + options[:content_type] = data[:headers]['Content-Type'] + data = data[:body] + end + + raise ArgumentError.new('The maximum size for a block blob created via create_block_blob is 64 MB.') if !data.nil? && Fog::Storage.get_body_size(data) > 64 * 1024 * 1024 + blob = @blob_client.create_block_blob(container_name, blob_name, data, options) + rescue Azure::Core::Http::HTTPError => ex + raise_azure_exception(ex, msg) + end + + if data.nil? + Fog::Logger.debug "Create a block blob #{blob_name} successfully." + else + Fog::Logger.debug "Upload a block blob #{blob_name} successfully." + end + blob + end + end + + # This class provides the mock implementation for unit tests. + class Mock + def create_block_blob(_container_name, _blob_name, body, _options = {}) + Fog::Logger.debug 'Blob created successfully.' + if body.nil? + { + 'name' => 'test_blob', + 'metadata' => {}, + 'properties' => { + 'last_modified' => 'Mon, 04 Jul 2016 02:50:20 GMT', + 'etag' => '0x8D3A3B5F017F52D', + 'lease_status' => nil, + 'lease_state' => nil, + 'content_length' => 0, + 'content_type' => 'application/octet-stream', + 'content_encoding' => nil, + 'content_language' => nil, + 'content_disposition' => nil, + 'content_md5' => nil, + 'cache_control' => nil, + 'sequence_number' => 0, + 'blob_type' => 'BlockBlob', + 'copy_id' => nil, + 'copy_status' => nil, + 'copy_source' => nil, + 'copy_progress' => nil, + 'copy_completion_time' => nil, + 'copy_status_description' => nil, + 'accept_ranges' => 0 + } + } + else + { + 'name' => 'test_blob', + 'metadata' => {}, + 'properties' => { + 'last_modified' => 'Mon, 04 Jul 2016 02:50:20 GMT', + 'etag' => '0x8D3A3B5F017F52D', + 'lease_status' => 'unlocked', + 'lease_state' => 'available', + 'content_length' => 4_194_304, + 'content_type' => 'application/octet-stream', + 'content_encoding' => nil, + 'content_language' => nil, + 'content_disposition' => nil, + 'content_md5' => 'tXAohIyxuu/t94Lp/ujeRw==', + 'cache_control' => nil, + 'sequence_number' => 0, + 'blob_type' => 'BlockBlob', + 'copy_id' => '095adc3b-e277-4c3d-97e0-0abca881f60c', + 'copy_status' => 'success', + 'copy_source' => 'https://testaccount.blob.core.windows.net/test_container/test_blob?snapshot=2016-02-04T08%3A35%3A50.3256874Z', + 'copy_progress' => '4194304/4194304', + 'copy_completion_time' => 'Thu, 04 Feb 2016 08:35:52 GMT', + 'copy_status_description' => nil, + 'accept_ranges' => 0 + } + } + end + end + end + end + end +end