class Backblaze::B2::Base

Protected Instance Methods

file_list(limit:, retreived:, first_file:, start_field:, bucket_id:, file_name: nil, first: true) click to toggle source
# File lib/backblaze/b2/base.rb, line 43
def file_list(limit:, retreived:, first_file:, start_field:, bucket_id:, file_name: nil, first: true)
  params = {'bucketId'.freeze => bucket_id}
  if limit == -1
    params['maxFileCount'.freeze] = 1000
  elsif limit > 1000
    params['maxFileCount'.freeze] = 1000
  elsif limit > 0
    params['maxFileCount'.freeze] = limit
  else
    return []
  end
  if first_file.nil?
    if file_name && start_field == 'startFileId' && first
      params['startFileName'] = file_name
    end
  else
    params[start_field] = first_file
  end

  p params

  response = post("/b2_list_file_#{start_field == 'startFileName' ? 'names' : 'versions'}", body: params.to_json)

  raise Backblaze::FileError.new(response) unless response.code == 200

  files = response['files'.freeze]
  halt = false
  files.map! do |f|
    if halt
      p f
      nil
    else
      ret = Hash[f.map{|k,v| [Backblaze::Utils.underscore(k).to_sym, v]}]
      p ret
      if file_name && file_name != ret[:file_name]
        halt = true
      end
      halt ? nil : ret
    end
  end.compact!

  retreived = retreived + files.size if retreived >= 0
  if limit > 0
    limit = limit - (retreived >= 0 ? files.size : 1000)
    limit = 0 if limit < 0
  end

  next_item = response[start_field.sub('start'.freeze, 'next'.freeze)]

  if (limit > 0 || limit == -1) && !!next_item && !halt
    files.concat file_list(
      first_file: next_item,
      limit: limit,
      retreived: retreived,
      start_field: start_field,
      bucket_id: bucket_id,
      first: false
    )
  else
    files
  end
end
file_versions(bucket_id:, convert:, limit:, double_check_server:, file_name: nil, &block) click to toggle source
# File lib/backblaze/b2/base.rb, line 29
def file_versions(bucket_id:, convert:, limit:, double_check_server:, file_name: nil, &block)
  retreive_count = (double_check_server ? 0 : -1)
  files = file_list(bucket_id: bucket_id, limit: limit, retreived: retreive_count, file_name: file_name, first_file: nil, start_field: 'startFileId'.freeze)

  files.map! do |f|
    if block.nil?
      Backblaze::B2::FileVersion.new(f)
    else
      block.call(f)
    end
  end if convert
  files.compact
end