class BucketClient::AzureClient
Public Class Methods
new(account, secret)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 11 def initialize(account, secret) @client = Azure::Storage::Blob::BlobService.create( storage_account_name: account, storage_access_key: secret ) @acc = account end
Public Instance Methods
create_bucket(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 46 def create_bucket(key) exist = exist_bucket key return OperationResult.new(false, "Bucket already exist", nil, 409) if exist begin @client.create_container key value = get_bucket! key OperationResult.new(true, "Azure Container created", value, 200) rescue Azure::Core::Http::HTTPError => e if e.status_code === 409 sleep(3) create_bucket key else OperationResult.new(false, e.description, nil, e.status_code) end rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
delete_blob(uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 173 def delete_blob(uri) data = break_uri uri begin @client.delete_blob(data[:bucket], data[:blob]) OperationResult.new(true, "Deleted Blob", nil, 204) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
delete_blob_if_exist(uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 164 def delete_blob_if_exist(uri) exist = exist_blob uri if exist delete_blob uri else OperationResult.new(true, "Blob already deleted", nil, 204) end end
delete_bucket(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 66 def delete_bucket(key) begin @client.delete_container key OperationResult.new(true, "Container deleted", nil, 200) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
delete_bucket_if_exist(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 77 def delete_bucket_if_exist(key) exist = exist_bucket key if exist delete_bucket key else OperationResult.new(true, "Bucket already deleted", nil, 200) end end
exist_blob(uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 129 def exist_blob(uri) begin data = break_uri uri @client.get_blob_metadata data[:bucket], data[:blob] true rescue Azure::Core::Http::HTTPError => e if e.status_code === 404 false end end end
exist_bucket(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 19 def exist_bucket(key) begin @client.get_container_metadata key true rescue Azure::Core::Http::HTTPError => e if e.status_code === 404 false else raise e end end end
get_blob(uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 117 def get_blob(uri) data = break_uri uri begin _, content = @client.get_blob data[:bucket], data[:blob] OperationResult.new(true, "", content, 200) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
get_bucket!(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 32 def get_bucket!(key) AzureBucket.new(self, key, @client, @acc) end
put_blob(payload, uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 141 def put_blob(payload, uri) mime = MimeMagic.by_magic payload data = break_uri uri begin type = mime&.type || "text/plain" @client.create_block_blob data[:bucket], data[:blob], payload, {:content_type => type} OperationResult.new(true, "OK", uri, 204) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
put_bucket(key)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 36 def put_bucket(key) exist = exist_bucket key if exist bucket = get_bucket! key OperationResult.new(true, "OK", bucket, 200) else create_bucket key end end
set_get_cors(key, cors)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 99 def set_get_cors(key, cors) begin cors_rule = Azure::Storage::BlobService::CorsRule.new cors_rule.allowed_origins = cors cors_rule.allowed_methods = ["GET"] cors_rule.allowed_headers = ['*'] cors_rule.exposed_headers = ['*'] service_properties = Azure::Storage::Blob::StorageServiceProperties.new service_properties.cors.cors_rules = [cors_rule] @client.set_service_properties(service_properties) OperationResult.new(true, "OK", nil, 200) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
set_read_policy(key, access)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 86 def set_read_policy(key, access) raise ArgumentError.new("Read Policy not accepted") if access != :public && access != :private begin level = access === :public ? "blob" : "" @client.set_container_acl key, level OperationResult.new(true, "OK", nil, 200) rescue Azure::Core::Http::HTTPError => e OperationResult.new(false, e.description, nil, e.status_code) rescue StandardError => e OperationResult.new(false, e.message, nil, 400) end end
update_blob(payload, uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 155 def update_blob(payload, uri) exist = exist_blob uri if exist put_blob payload, uri else OperationResult.new(false, "Blob does not exist", nil, 404) end end
Private Instance Methods
break_uri(uri)
click to toggle source
# File lib/bucket_client/azure/azure_client.rb, line 187 def break_uri(uri) url = Addressable::URI.parse uri fragments = url.path.split("/").select {|x| !x.nil? && !x.empty?} bucket = fragments[0] blob = fragments.drop(1).join "/" {bucket: bucket, blob: blob} end