class Fog::Storage::Dtdream::Real

Public Instance Methods

abort_multipart_upload(bucket, object, endpoint, uploadid) click to toggle source
# File lib/fog/dtdream/requests/storage/delete_object.rb, line 28
def abort_multipart_upload(bucket, object, endpoint, uploadid)
  if (nil == endpoint)
    location = get_bucket_location(bucket)
    endpoint = "http://"+location+".aliyuncs.com"
  end
  path = object+"?uploadId="+uploadid
  resource = bucket+'/'+path

  ret = request(
          :expects  => 204,
          :method   => 'DELETE',
          :path     => path,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )

end
copy_object(source_bucket, source_object, target_bucket, target_object, options = {}) click to toggle source

Copy object

Parameters

  • source_container_name<~String> - Name of source bucket

  • source_object_name<~String> - Name of source object

  • target_container_name<~String> - Name of bucket to create copy in

  • target_object_name<~String> - Name for new copy of object

  • options<~Hash> - Additional headers options={}

# File lib/fog/dtdream/requests/storage/copy_object.rb, line 13
def copy_object(source_bucket, source_object, target_bucket, target_object, options = {})
  options = options.reject {|key, value| value.nil?}
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  source_bucket ||= bucket
  target_bucket ||= bucket
  headers = { 'x-oss-copy-source' => "/#{source_bucket}/#{source_object}" }
  location = get_bucket_location(target_bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = target_bucket+'/'+target_object
  request({
    :expects  => [200, 203],
    :headers  => headers,
    :method   => 'PUT',
    :path     => target_object,
    :bucket   => target_bucket,
    :resource => resource,
    :endpoint => endpoint
  })
end
delete_bucket(bucket) click to toggle source

Delete an existing bucket

Parameters

  • container<~String> - Name of container to delete

  • object<~String> - Name of object to delete

# File lib/fog/dtdream/requests/storage/delete_bucket.rb, line 11
def delete_bucket(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :bucket   => bucket,
    :resource => resource,
    :endpoint => endpoint
  )
end
delete_container(container, options={}) click to toggle source

Delete an existing container

Parameters

  • container<~String> - Name of container to delete

  • options

# File lib/fog/dtdream/requests/storage/delete_container.rb, line 11
def delete_container(container, options={})

  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  object = container+'/'
  resource = bucket+'/'+object

  request(
      :expects  => 204,
      :method   => 'DELETE',
      :path     => object,
      :bucket   => bucket,
      :resource => resource,
      :endpoint => endpoint
  )
end
delete_object(object, options={}) click to toggle source

Delete an existing object

Parameters

  • container<~String> - Name of container to delete

  • object<~String> - Name of object to delete

# File lib/fog/dtdream/requests/storage/delete_object.rb, line 11
def delete_object(object, options={})
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'+object
  request(
    :expects  => 204,
    :method   => 'DELETE',
    :path     => object,
    :bucket   => bucket,
    :resource => resource,
    :endpoint => endpoint
  )
end
get_bucket(bucket) click to toggle source
# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 5
def get_bucket(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  xml = ret.data[:body]
  result = XmlSimple.xml_in(xml)
end
get_bucket_CORSRules(bucket) click to toggle source

{“AllowedOrigin”=>, “AllowedMethod”=>, “AllowedHeader”=>, “ExposeHeader”=>, “MaxAgeSeconds”=>}

# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 50
def get_bucket_CORSRules(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?cors'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203, 404],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  if 404 != ret.data[:status]
    cors = XmlSimple.xml_in(ret.data[:body])["CORSRule"][0]
  else
    nil
  end
end
get_bucket_acl(bucket) click to toggle source
# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 33
def get_bucket_acl(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?acl'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  acl = XmlSimple.xml_in(ret.data[:body])["AccessControlList"][0]["Grant"][0]
end
get_bucket_lifecycle(bucket) click to toggle source

{“ID”=>, “Prefix”=>, “Status”=>, “Expiration”=>[{“Days”=>}]}

# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 71
def get_bucket_lifecycle(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?lifecycle'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203, 404],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  if 404 != ret.data[:status]
    lifecycle = XmlSimple.xml_in(ret.data[:body])["Rule"][0]
  else
    nil
  end       
end
get_bucket_location(bucket) click to toggle source
# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 20
def get_bucket_location(bucket)
  attribute = '?location'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource
  )
  location = XmlSimple.xml_in(ret.data[:body])
end
get_bucket_logging(bucket) click to toggle source

返回log的prefix,如果没有设置log开关,返回nil

# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 92
def get_bucket_logging(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?logging'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  logging = XmlSimple.xml_in(ret.data[:body])["LoggingEnabled"][0]["TargetPrefix"]
end
get_bucket_referer(bucket) click to toggle source

{“AllowEmptyReferer”=>, “RefererList”=>}

# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 109
def get_bucket_referer(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?referer'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  referer = XmlSimple.xml_in(ret.data[:body])
end
get_bucket_website(bucket) click to toggle source

{“IndexDocument”=>[{“Suffix”=>}], “ErrorDocument”=>[{“Key”=>}]}

# File lib/fog/dtdream/requests/storage/get_bucket.rb, line 126
def get_bucket_website(bucket)
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  attribute = '?website'
  resource = bucket+'/'+attribute
  ret = request(
          :expects  => [200, 203, 404],
          :method   => 'GET',
          :path     => attribute,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  if 404 != ret.data[:status]
    website = XmlSimple.xml_in(ret.data[:body])
  else
    nil
  end
end
get_container(container, options = {}) click to toggle source
# File lib/fog/dtdream/requests/storage/get_container.rb, line 5
def get_container(container, options = {})
  options = options.reject {|key, value| value.nil?}

  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket

  marker = options[:marker]
  maxKeys = options[:maxKeys]
  delimiter = '/'

  path = ""

  if container == "" || container == "." || container == nil
    prefix = nil
  else
    prefix = container+'/'
  end

  if prefix
    path+="?prefix="+prefix
    if marker
      path+="&marker="+marker
    end
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end
  elsif marker
    path+="?marker="+marker
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end
  elsif maxKeys
    path+="?max-keys="+maxKeys
    if delimiter
      path+="&delimiter="+delimiter
    end
  elsif delimiter
    path+="?delimiter="+delimiter
  end

  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'
  ret = request(
      :expects  => [200, 203, 400],
      :method   => 'GET',
      :path     => path,
      :resource => resource,
      :bucket => bucket
  )
  xml = ret.data[:body]
  result = XmlSimple.xml_in(xml)["CommonPrefixes"]
end
get_containers(options = {}) click to toggle source

List existing storage containers

Parameters

  • options<~Hash>:

    • ‘limit’<~Integer> - Upper limit to number of results returned

    • ‘marker’<~String> - Only return objects with name greater than this value

Returns

# File lib/fog/dtdream/requests/storage/get_containers.rb, line 14
def get_containers(options = {})
  options = options.reject {|key, value| value.nil?}

  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  prefix = options[:prefix]
  marker = options[:marker]
  maxKeys = options[:maxKeys]
  delimiter = '/'

  path = ""

  if prefix
    path+="?prefix="+prefix
    if marker
      path+="&marker="+marker
    end
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end

  elsif marker
    path+="?marker="+marker
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end

  elsif maxKeys
    path+="?max-keys="+maxKeys
    if delimiter
      path+="&delimiter="+delimiter
    end
  elsif delimiter
    path+="?delimiter="+delimiter
  end

  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'
  ret = request(
      :expects  => [200, 203, 400],
      :method   => 'GET',
      :path     => path,
      :resource => resource,
      :bucket => bucket
  )
  xml = ret.data[:body]
  result = XmlSimple.xml_in(xml)["CommonPrefixes"]
end
get_object(object, range = nil, options = {}) click to toggle source

Get details for object

Parameters

  • container<~String> - Name of container to look in

  • object<~String> - Name of object to look for

# File lib/fog/dtdream/requests/storage/get_object.rb, line 11
def get_object(object, range = nil, options = {})
  options = options.reject {|key, value| value.nil?}
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  endpoint = options[:endpoint]
  if (nil == endpoint)
    location = get_bucket_location(bucket)
    endpoint = "http://"+location+".aliyuncs.com"
  end
  resource = bucket+'/'+object
  para = {
    :expects  => [200, 206, 404],
    :method   => 'GET',
    :path     => object,
    :bucket   => bucket,
    :resource => resource,
    :endpoint => endpoint
  }

  if range
    rangeStr = "bytes="+range
    para[:headers] = {'Range' => rangeStr}
  end

  response = request(para)
  response.data
end
get_object_http_url_public(object, expires, options = {}) click to toggle source

Get an expiring object http url

Parameters

  • container<~String> - Name of container containing object

  • object<~String> - Name of object to get expiring url for

  • expires<~Time> - An expiry time for this url

Returns

  • response<~Excon::Response>:

    • body<~String> - url for object

# File lib/fog/dtdream/requests/storage/get_object_http_url.rb, line 15
def get_object_http_url_public(object, expires, options = {})
  options = options.reject {|key, value| value.nil?}
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  acl = get_bucket_acl(bucket)
  location = get_bucket_location(bucket)
  
  if "private" == acl
    expires_time = (Time.now.to_i + expires).to_s
    resource = bucket+'/'+object
    signature = sign("GET", expires_time, nil, resource)
    url = "http://"+bucket+"."+location+".aliyuncs.com/"+object+
             "?OSSAccessKeyId="+@aliyun_accesskey_id+"&Expires="+expires_time+
             "&Signature="+URI.encode(signature,'/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
  elsif "public-read" == acl or "public-read-write" == acl
    url = "http://"+bucket+"."+location+".aliyuncs.com/"+object
  else
    url = "acl is wrong with value:"+acl
  end
end
get_object_https_url_public(object, expires, options = {}) click to toggle source

Get an expiring object https url from Cloud Files

Parameters

  • container<~String> - Name of container containing object

  • object<~String> - Name of object to get expiring url for

  • expires<~Time> - An expiry time for this url

Returns

  • response<~Excon::Response>:

    • body<~String> - url for object

# File lib/fog/dtdream/requests/storage/get_object_https_url.rb, line 15
def get_object_https_url_public(object, expires, options = {})
  options = options.reject {|key, value| value.nil?}
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  acl = get_bucket_acl(bucket)
  location = get_bucket_location(bucket)
  
  if "private" == acl
    expires_time = (Time.now.to_i + expires).to_s
    resource = bucket+'/'+object
    signature = sign("GET", expires_time, nil, resource)
    url = "https://"+bucket+"."+location+".aliyuncs.com/"+object+
             "?OSSAccessKeyId="+@aliyun_accesskey_id+"&Expires="+expires_time+
             "&Signature="+URI.encode(signature,'/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
  elsif "public-read" == acl or "public-read-write" == acl
    url = "https://"+bucket+"."+location+".aliyuncs.com/"+object
  else
    url = "acl is wrong with value:"+acl
  end
end
head_object(object, options={}) click to toggle source

Get headers for object

Parameters

  • container<~String> - Name of container to look in

  • object<~String> - Name of object to look for

# File lib/fog/dtdream/requests/storage/head_object.rb, line 11
def head_object(object, options={})
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'+object
  ret = request(
    :expects  => [200, 404],
    :method   => 'HEAD',
    :path     => object,
    :bucket   => bucket,
    :resource => resource,
    :endpoint => endpoint
  )
  return ret
end
list_buckets(options={}) click to toggle source
# File lib/fog/dtdream/requests/storage/list_buckets.rb, line 5
def list_buckets(options={})
  prefix = options[:prefix]
  marker = options[:marker]
  maxKeys = options[:maxKeys]
  
  path = ""
  
  if prefix
    path+="?prefix="+prefix
    if marker
      path+="&marker="+marker
    end
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    
  elsif marker
    path+="?marker="+marker
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    
  elsif maxKeys
    path+="?max-keys="+maxKeys
  end
  
  ret = request(
          :expects  => [200, 203],
          :method   => 'GET',
          :path     => path
  )
  xml = ret.data[:body]
  result = XmlSimple.xml_in(xml)["Buckets"][0]
end
list_multipart_uploads(bucket, endpoint, options = {}) click to toggle source
# File lib/fog/dtdream/requests/storage/list_objects.rb, line 59
def list_multipart_uploads(bucket, endpoint, options = {})
  if (nil == endpoint)
    location = get_bucket_location(bucket)
    endpoint = "http://"+location+".aliyuncs.com"
  end
  path = "?uploads"
  resource = bucket+'/'+path

  ret = request(
          :expects  => 200,
          :method   => 'GET',
          :path     => path,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  uploadid = XmlSimple.xml_in(ret.data[:body])["Upload"]

end
list_objects(options={}) click to toggle source
# File lib/fog/dtdream/requests/storage/list_objects.rb, line 5
def list_objects(options={})
  bucket = options[:bucket]
  bucket ||= @aliyun_oss_bucket
  prefix = options[:prefix]
  marker = options[:marker]
  maxKeys = options[:maxKeys]
  delimiter = options[:delimiter]
  
  path = ""
  
  if prefix
    path+="?prefix="+prefix
    if marker
      path+="&marker="+marker
    end
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end
    
  elsif marker
    path+="?marker="+marker
    if maxKeys
      path+="&max-keys="+maxKeys
    end
    if delimiter
      path+="&delimiter="+delimiter
    end
    
  elsif maxKeys
    path+="?max-keys="+maxKeys
    if delimiter
      path+="&delimiter="+delimiter
    end
  elsif delimiter
      path+="?delimiter="+delimiter
  end
  
  location = get_bucket_location(bucket)
  endpoint = "http://"+location+".aliyuncs.com"
  resource = bucket+'/'
  ret = request(
          :expects  => [200, 203, 400],
          :method   => 'GET',
          :path     => path,
          :resource => resource,
          :bucket => bucket
  )
  xml = ret.data[:body]
  result = XmlSimple.xml_in(xml)
end
list_parts(bucket, object, endpoint, uploadid, options = {}) click to toggle source
# File lib/fog/dtdream/requests/storage/list_objects.rb, line 79
def list_parts(bucket, object, endpoint, uploadid, options = {})
  if (nil == endpoint)
    location = get_bucket_location(bucket)
    endpoint = "http://"+location+".aliyuncs.com"
  end
  path = object+"?uploadId="+uploadid
  resource = bucket+'/'+path

  ret = request(
          :expects  => 200,
          :method   => 'GET',
          :path     => path,
          :bucket   => bucket,
          :resource => resource,
          :endpoint => endpoint
  )
  parts = XmlSimple.xml_in(ret.data[:body])["Part"]
end
put_bucket(bucketName) click to toggle source
# File lib/fog/dtdream/requests/storage/put_bucket.rb, line 5
def put_bucket(bucketName)
  
  resource = bucketName+'/'
  ret = request(
          :expects  => [200, 203],
          :method   => 'PUT',
          :resource => resource,
          :bucket => bucketName
  )
end