Sha256: 9b5b46a532f0194da8a60b0a0f2cf1fab8ae89c58d000a17ef9137c51948c9e1

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module ClientBucketMethods

  def create_bucket(params)
    obj = nil
    request(:post, "#{api_uri.to_s}/buckets", {:name => params['id'] }) do |response|
      handle_backend_error(response) if response.code!=201
      obj = base_object(:bucket, response)
    end
  end

  def destroy_bucket(params)
    #actually response here is 204 - no content - so nothing returned to client?
    request(:delete, "#{api_uri.to_s}/buckets/#{params['id']}") do |response|
      handle_backend_error(response) if response.code!=204
      response
    end
  end

  def create_blob(params)
    blob = nil
    resource = RestClient::Resource.new("#{api_uri.to_s}/buckets/#{params['bucket']}", :open_timeout => 10, :timeout => 45)
    headers = default_headers.merge(extended_headers)
    unless params['metadata'].nil?
      metadata_headers = {}
      params['metadata'].each   do |k,v|
        metadata_headers["X-Deltacloud-Blobmeta-#{k}"] = v
      end
      headers = headers.merge(metadata_headers)
    end
    resource.send(:post, {:blob_data => File.new(params['file_path'], 'rb'), :blob_id => params[:id]}, headers) do |response, request, block|
      handle_backend_error(response) if response.code.eql?(500)
      blob = base_object(:blob, response)
      yield blob if block_given?
    end
    return blob
  end

  def destroy_blob(params)
    request(:delete, "#{api_uri.to_s}/buckets/#{params['bucket']}/#{params[:id]}") do |response|
      handle_backend_error(response) if response.code!=204
      response
    end
  end

  #RestClient doesn't do streaming 'get' yet - we already opened a pull request on this see
  #https://github.com/archiloque/rest-client/issues/closed#issue/62 - apparently its going to
  #be in the next version - unknown when. For now get full response. FIXME
  def blob_data(params)
    request(:get, "#{api_uri.to_s}/buckets/#{params['bucket']}/#{params[:id]}/content") do |response|
      response
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
deltacloud-client-0.3.1 lib/client_bucket_methods.rb
deltacloud-client-0.3.0 lib/client_bucket_methods.rb