lib/fog/aliyun/storage.rb in fog-aliyun-0.3.18 vs lib/fog/aliyun/storage.rb in fog-aliyun-0.3.19

- old
+ new

@@ -7,10 +7,11 @@ AliyunOssSdk= Aliyun::OSS module Fog module Aliyun class Storage < Fog::Service + COMPLIANT_BUCKET_NAMES = /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/ DEFAULT_REGION = 'cn-hangzhou' DEFAULT_SCHEME = 'https' DEFAULT_SCHEME_PORT = { 'http' => 80, @@ -34,23 +35,27 @@ request_path 'fog/aliyun/requests/storage' request :copy_object request :delete_bucket request :delete_object + request :delete_multiple_objects request :get_bucket + request :get_bucket_location request :get_object + request :get_object_acl request :get_object_http_url request :get_object_https_url request :head_object request :put_bucket request :put_object + request :get_service request :list_buckets request :list_objects - request :get_containers - request :get_container - request :delete_container - request :put_container + request :initiate_multipart_upload + request :upload_part + request :complete_multipart_upload + request :abort_multipart_upload class Real # Initialize connection to OSS # # ==== Notes @@ -119,10 +124,11 @@ :endpoint => @aliyun_oss_endpoint, :access_key_id => @aliyun_accesskey_id, :access_key_secret => @aliyun_accesskey_secret ) @oss_http = AliyunOssSdk::HTTP.new(@oss_config) + @oss_protocol = AliyunOssSdk::Protocol.new(@oss_config) end def reload @connection.reset end @@ -132,9 +138,19 @@ when '' "oss-#{DEFAULT_REGION}.aliyuncs.com" else "oss-#{region}.aliyuncs.com" end + end + + def object_to_path(object_name=nil) + '/' + escape(object_name.to_s).gsub('%2F','/') + end + + def escape(string) + string.gsub(/([^a-zA-Z0-9_.\-~\/]+)/) { + "%" + $1.unpack("H2" * $1.bytesize).join("%").upcase + } end def request(params) method = params[:method] time = Time.new.utc