class OpenBuildServiceAPI::Binary

Attributes

architecture[R]
created_at[R]
local_file_path[R]
local_path[R]
name[R]
package[RW]
repository[R]
size[R]

Public Class Methods

new(params = {}) click to toggle source
# File lib/models/binary.rb, line 6
def initialize(params = {})
  raise ArgumentError.new('repository needs to be an instance of OpenBuildServiceAPI::Repository') unless params[:repository].is_a?(Repository)

  @name = params[:name]
  @size = Filesize.from(params[:size])
  @created_at = Time.at(params[:created_at])
  @repository = params[:repository]
  @architecture = params[:architecture]
  @package = params[:package]
  @connection = params[:connection]
end

Public Instance Methods

delete_local_copy!() click to toggle source
# File lib/models/binary.rb, line 44
def delete_local_copy!
  return false unless @local_file_path
  return false unless File.exists?(@local_file_path)

  File.delete(@local_file_path)
  FileUtils.rm_r(@local_path) if Dir.empty?(@local_path) && @tmp_dir

  true
end
download(destination=nil) click to toggle source
# File lib/models/binary.rb, line 22
def download(destination=nil)
  delete_local_copy!

  if destination
    raise InvalidDownloadDirectoryPath.new("Path '#{destination}' is not a directory.") unless File.directory?(destination)

    destination = destination[0..-2] if destination.end_with?('/')
    @tmp_dir = false
  else
    destination = Dir.mktmpdir('obs-binary-download')
    @tmp_dir = true
  end

  @local_file_path = "#{destination}/#{@name}"
  @local_path = destination

  response = @connection.send_request(:get, "/build/#{CGI.escape(@package.project.name)}/#{CGI.escape(@repository.to_s)}/" \
                                      "#{CGI.escape(@architecture)}/#{CGI.escape(@package.name)}/#{CGI.escape(@name)}")
  File.write(@local_file_path, response.body)
  @local_file_path
end
to_s() click to toggle source
# File lib/models/binary.rb, line 18
def to_s
  @name
end