Sha256: 8160c7b147bbd32647b053683c7f3fab55e1b7d0ab28e9cb5b5b4db4d0e31a4a

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

module RubyBox
  class File < Item

    has_many :comments

    def download
      resp = stream.read
    end

    def stream( opts={} )
      url = "#{RubyBox::API_URL}/#{resource_name}/#{id}/content"
      @session.do_stream( url, opts )
    end

    def upload_content( data )
      url = "#{RubyBox::UPLOAD_URL}/#{resource_name}/content"
      uri = URI.parse(url)
      request = Net::HTTP::Post::Multipart.new(uri.path, {
        "filename" => UploadIO.new(data, "application/pdf", name),
        "folder_id" => parent.id
      })

      resp = @session.request(uri, request)
      if resp['entries']
        @raw_item = resp['entries'][0]
      else
        @raw_item = resp
      end
      self
    end

    def update_content( data )

      url = "#{RubyBox::UPLOAD_URL}/#{resource_name}/#{id}/content"
      uri = URI.parse(url)

      request = Net::HTTP::Post::Multipart.new(uri.path, {
        "filename" => prepare_upload(data, name),
        "folder_id" => parent.id
      }, {"if-match" => etag })

      resp = @session.request(uri, request)
      if resp['entries']
        @raw_item = resp['entries'][0]
      else
        @raw_item = resp
      end
      self
    end

    private

    def resource_name
      'files'
    end

    def has_mini_format?
      true
    end

    def update_fields
      ['name', 'description']
    end

    def prepare_upload(data, fname)
      UploadIO.new(data, "application/pdf", fname)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-box-1.6.0 lib/ruby-box/file.rb