class FIR::AppUploader

Attributes

app_info[RW]
options[RW]
uploading_info[RW]
user_info[RW]

Public Class Methods

new(app_info, user_info, uploading_info, options) click to toggle source
# File lib/fir/util/app_uploader.rb, line 9
def initialize(app_info, user_info, uploading_info, options)
  @app_info = app_info
  @user_info = user_info
  @uploading_info = uploading_info
  @options = options
end

Public Instance Methods

upload() click to toggle source
# File lib/fir/util/app_uploader.rb, line 16
def upload
  upload_icon
  binary_callback_info = upload_binary
  raise binary_callback_info if binary_callback_info.is_a? StandardError

  # 将 binary 的callback信息返回
  binary_callback_info
end

Protected Instance Methods

app_id() click to toggle source
# File lib/fir/util/app_uploader.rb, line 78
def app_id
  uploading_info[:id]
end
binary_cert() click to toggle source
# File lib/fir/util/app_uploader.rb, line 60
def binary_cert
  uploading_info[:cert][:binary]
end
callback_binary_information() click to toggle source
# File lib/fir/util/app_uploader.rb, line 95
def callback_binary_information
  {
    build: app_info[:build],
    fname: File.basename(file_path),
    key: binary_cert[:key],
    name: options[:specify_app_display_name] || app_info[:display_name] || app_info[:name],
    origin: 'fir-cli',
    parent_id: app_id,
    release_tag: 'develop',
    fsize: File.size(file_path),
    release_type: app_info[:release_type],
    distribution_name: app_info[:distribution_name],
    token: binary_cert[:token],
    version: app_info[:version],
    changelog: read_changelog,
    user_id: user_info[:id]
  }.reject { |x| x.nil? || x == '' }
end
callback_icon_information() click to toggle source
# File lib/fir/util/app_uploader.rb, line 82
def callback_icon_information
  return {} if icon_file_path.nil?

  {
    key: icon_cert[:key],
    token: icon_cert[:token],
    origin: 'fir-cli',
    parent_id: app_id,
    fsize: File.size(icon_file_path),
    fname: 'blob'
  }
end
callback_to_api(callback_url, callback_binary_information) click to toggle source
# File lib/fir/util/app_uploader.rb, line 27
def callback_to_api(callback_url, callback_binary_information)
  logger.debug 'begin to callback api'
  return if callback_binary_information.blank?

  answer = post callback_url, callback_binary_information, timeout: 20
  logger.debug 'callback api finished'
  answer
end
file_path() click to toggle source
# File lib/fir/util/app_uploader.rb, line 64
def file_path
  app_info[:file_path]
end
icon_cert() click to toggle source
# File lib/fir/util/app_uploader.rb, line 56
def icon_cert
  uploading_info[:cert][:icon]
end
icon_file_path() click to toggle source
# File lib/fir/util/app_uploader.rb, line 36
def icon_file_path
  if options[:specify_icon_file].blank?
    app_info[:icons].max_by { |f| File.size(f) }
  else
    File.absolute_path(options[:specify_icon_file])
  end
end
logger() click to toggle source
# File lib/fir/util/app_uploader.rb, line 114
def logger
  FIR.logger
end
read_changelog() click to toggle source
# File lib/fir/util/app_uploader.rb, line 49
def read_changelog
  changelog = options[:changelog].to_s.to_utf8
  return if changelog.blank?

  File.exist?(changelog) ? File.read(changelog) : changelog
end
skip_update_icon?() click to toggle source

是否跳过 icon 上传

# File lib/fir/util/app_uploader.rb, line 45
def skip_update_icon?
  options[:skip_update_icon].to_s == 'true'
end
try_to_action(action, &block) click to toggle source
# File lib/fir/util/app_uploader.rb, line 68
def try_to_action(action, &block)
  logger.debug "begin to #{action}"
  answer = block.call
  logger.debug "#{action} finished"
  answer
rescue StandardError => e
  logger.error "#{action} error ! #{e.message}"
  raise e
end