module Dag::Client::API::Storage

Public Instance Methods

buckets() click to toggle source
# File lib/dag/client/api/storage.rb, line 8
def buckets
  xml_doc = execute_storage(RestParameter.new(:get, '/'))
  Dag::Client::API::BucketsResult.new(xml_doc)
end
create_bucket(bucket) click to toggle source
# File lib/dag/client/api/storage.rb, line 36
def create_bucket(bucket)
  resource = '/'
  execute_storage(RestParameter.new(:put, resource, bucket: bucket, content_type: 'application/json'))
end
create_multipart_object(bucket, object_name, options = {}, &block) click to toggle source
# File lib/dag/client/api/storage.rb, line 50
def create_multipart_object(bucket, object_name, options = {}, &block)
  mu = MultipartUpload.new(bucket, object_name, options) do
    self
  end

  # Initiate Multipart Upload
  upload_id = mu.initiate_multipart_upload

  begin
    # Upload Part
    upload_objects = mu.upload_part(upload_id, &block)

    # Complete Multipart Upload
    mu.complete_multipart_upload(upload_id, upload_objects)

  rescue => e
    # Abort Multipart Upload
    mu.abort_multipart_upload(upload_id)

    raise e
  end
end
create_object(bucket, object_name, options = {}, &block) click to toggle source
# File lib/dag/client/api/storage.rb, line 41
def create_object(bucket, object_name, options = {}, &block)
  resource = "/#{object_name}"

  type = MIME::Types.type_for(object_name).first
  content_type = type ? type.to_s : 'application/octet-stream'
  options = options.merge(bucket: bucket, content_type: content_type)
  execute_storage(RestParameter.new(:put, resource, options), &block)
end
delete_bucket(bucket) click to toggle source
# File lib/dag/client/api/storage.rb, line 84
def delete_bucket(bucket)
  resource = '/'
  execute_storage(RestParameter.new(:delete, resource, bucket: bucket))
end
delete_object(bucket, object) click to toggle source
# File lib/dag/client/api/storage.rb, line 89
def delete_object(bucket, object)
  resource = "/#{object}"
  execute_storage(RestParameter.new(:delete, resource, bucket: bucket, content_type: 'application/json'))
end
get_object(bucket, object, range = nil) click to toggle source
# File lib/dag/client/api/storage.rb, line 73
def get_object(bucket, object, range = nil)
  resource = "/#{object}"
  headers = {}
  if range
    bt = "bytes=#{range.first}-"
    bt += "#{range.last}" if range.last != -1
    headers[:Range] = bt
  end
  execute_storage(RestParameter.new(:get, resource, bucket: bucket, raw_data: true, headers: headers))
end
import(db_name, tbl_name, file_paths, options = {}) click to toggle source
# File lib/dag/client/api/storage.rb, line 94
def import(db_name, tbl_name, file_paths, options = {})
  _import = Import.new(db_name, tbl_name, file_paths, options) do
    self
  end

  # calc label suffix => Fixnum
  suffix = _import.calc_label_suffix

  # import execute
  upload_objects = _import.execute(suffix)

  STDERR.puts "finished upload #{upload_objects.size} objects."
  STDERR.puts
  STDERR.puts 'upload_objects:'
  upload_objects.each do |o|
    STDERR.puts o
  end
end
objects(bucket, prefix: nil, max: nil, marker: nil, delimiter: nil) click to toggle source
# File lib/dag/client/api/storage.rb, line 13
def objects(bucket, prefix: nil, max: nil, marker: nil, delimiter: nil)
  resource = '/'
  query_params = {}
  if prefix
    query_params.merge!('prefix' => prefix)
  end

  if max
    query_params.merge!('max-keys' => max)
  end

  if marker
    query_params.merge!('marker' => marker)
  end

  if delimiter
    query_params.merge!('delimiter' => delimiter)
  end

  xml_doc = execute_storage(RestParameter.new(:get, resource, bucket: bucket, query_params: query_params))
  Dag::Client::API::ObjectsResult.new(xml_doc)
end