class Pcloud::FileHandler

Public Class Methods

new(client) click to toggle source
# File lib/pcloud/files/file_handler.rb, line 7
def initialize(client)
  @client = client
end

Public Instance Methods

download(params) click to toggle source
# File lib/pcloud/files/file_handler.rb, line 15
def download(params)
  # destination = params[:destination] ? params[:destination] : '.'
  # data = request(:get, "getfilelink", {fileid: params[:fileid], forcedownload: 1})
  # url = "https://#{data[:hosts][0]+data[:path]}"
  # IO.copy_stream(URI.open(url), "#{destination}/#{url.split("/").last}")
  # File.write("#{destination}/#{url.split("/").last}", URI.open(url).read)

  destination = params[:destination] || '.'
  filename = params[:filename] || nil
  if !filename
    stat = @client.request(:get, "stat", {fileid: params[:fileid]})
    raise NotFoundError.new(:fileid, params[:fileid]) if stat[:error]
    filename = stat[:metadata][:name]
  end
  File.write("#{destination}/#{filename}", @client.request(:get, "gettextfile", {fileid: params[:fileid], raw: true}))
end
download_folder(params) click to toggle source
# File lib/pcloud/files/file_handler.rb, line 32
def download_folder(params)
  data = @client.request(:get, "listfolder", {folderid: params[:folderid]})
  raise NotFoundError.new(:folderid, params[:folderid]) if data[:error]

  destination = params[:destination] || '.'
  folder_name = params[:filename] || data[:metadata][:name] << ".zip"
  stringio = Zip::OutputStream::write_buffer do |zio|
    data[:metadata][:contents].each do |content|
      zio.put_next_entry(content[:name])
      zio.write(@client.request(:get, "gettextfile", {fileid: content[:fileid], raw: true}))
    end
  end
  stringio.rewind #reposition buffer pointer to the beginning
  File.new("#{destination}/#{folder_name}","wb").write(stringio.sysread) #write buffer to zipfile
end
upload(params, payload) click to toggle source
# File lib/pcloud/files/file_handler.rb, line 11
def upload(params, payload)
  @client.request(:post, 'uploadfile', params, payload)
end