class Algorithmia::DataDirectory

Public Instance Methods

create() click to toggle source
# File lib/algorithmia/data_directory.rb, line 13
def create
  parent, name = File.split(@url)
  Algorithmia::Requester.new(@client).post(parent, name: name)
  true
end
delete(force = false) click to toggle source
# File lib/algorithmia/data_directory.rb, line 19
def delete(force = false)
  query = {}
  query[:force] = true if force
  Algorithmia::Requester.new(@client).delete(@url, query: query)
  true
end
each(&block) click to toggle source
# File lib/algorithmia/data_directory.rb, line 26
def each(&block)
  return enum_for(:each) unless block_given?

  list(block) do |dir|
    extract_files(dir) + extract_folders(dir)
  end
end
each_dir(&block) click to toggle source
# File lib/algorithmia/data_directory.rb, line 42
def each_dir(&block)
  return enum_for(:each_dir) unless block_given?

  list(block) do |dir|
    extract_folders(dir)
  end
end
each_file(&block) click to toggle source
# File lib/algorithmia/data_directory.rb, line 34
def each_file(&block)
  return enum_for(:each_file) unless block_given?

  list(block) do |dir|
    extract_files(dir)
  end
end
exists?() click to toggle source
# File lib/algorithmia/data_directory.rb, line 6
def exists?
  Algorithmia::Requester.new(@client).get(@url)
  true
rescue Errors::NotFoundError
  false
end
file(file_name) click to toggle source
# File lib/algorithmia/data_directory.rb, line 50
def file(file_name)
  @client.file(URI.encode(File.join(@data_uri, file_name)))
end
put_file(file_path) click to toggle source
# File lib/algorithmia/data_directory.rb, line 54
def put_file(file_path)
  file(File.basename(file_path)).put_file(file_path)
end

Private Instance Methods

extract_files(dir) click to toggle source
# File lib/algorithmia/data_directory.rb, line 60
def extract_files(dir)
  files = dir.parsed_response['files'] || []
  files.map do |f|
    file(f['filename'])
  end
end
extract_folders(dir) click to toggle source
# File lib/algorithmia/data_directory.rb, line 67
def extract_folders(dir)
  folders = dir.parsed_response['folders'] || []
  folders.map do |f|
    @client.dir(URI.encode(File.join(@data_uri, f['name'])))
  end
end
list(each_proc) { |dir| ... } click to toggle source
# File lib/algorithmia/data_directory.rb, line 74
def list(each_proc)
  marker = nil

  loop do
    query = {}
    query[:marker] = marker if marker

    dir = Algorithmia::Requester.new(@client).get(@url, query: query)

    items = yield dir
    items.each(&each_proc)

    marker = dir.parsed_response['marker']
    break unless marker && !marker.empty?
  end
end