class Fastlane::Actions::FabuloveAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 111
def self.authors
  ["carry"]
end
available_options() click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 124
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :username,
                                 env_name: "FL_FABULOVE_USERNAME", # The name of the environment variable
                                 description: "You fabulove username", # a short description of this parameter
                                 is_string: true,
                                 default_value: nil),
    FastlaneCore::ConfigItem.new(key: :password,
                                 env_name: "FL_FABULOVE_PASSWORD",
                                 description: "You fabulove password",
                                 is_string: true,
                                 default_value: nil),
    FastlaneCore::ConfigItem.new(key: :base_url,
                                 env_name: "FL_FABULOVE_BASE_URL", # The name of the environment variable
                                 description: "You custom fabulove server url address.Example:https://gitlab.engineerhope.com:444", # a short description of this parameter
                                 is_string: true,
                                 default_value: nil),
    FastlaneCore::ConfigItem.new(key: :team_id,
                                 env_name: "FL_FABULOVE_TEAM_ID",
                                 description: "You fabulove team_id",
                                 is_string: true, # true: verifies the input is a string, false: every kind of value
                                 default_value: nil), # the default value if the user didn't provide one
    FastlaneCore::ConfigItem.new(key: :file_path,
                                 env_name: "FL_FABULOVE_FILE_PATH",
                                 description: "FILE APP PATH",
                                 default_value: nil,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :keep_app_versions_num,
                                 env_name: "FL_FABULOVE_KEEP_NUM",
                                 description: "Keep app versions number",
                                 is_string: false,
                                 default_value: nil,
                                 optional: false)
  ]
end
delete_old_version(base_url, token, app_id, keep_num, team_id) click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 65
def self.delete_old_version (base_url, token, app_id, keep_num, team_id)
  authorization = "Bearer #{token}"
  get_response = HTTParty.get("#{base_url}/api/apps/#{team_id}/#{app_id}/versions?page=0&size=#{keep_num*2}",{
    :headers => {'Content-Type'=>'application/json', 'Authorization'=>authorization}
  })

  # puts get_response.body

  versions_body = JSON.parse(get_response.body)

  if versions_body['success'] == false
    UI.message "get app versions failed"
    return
  end

  UI.message "get app versions success"

  if versions_body['data'].size <= keep_num
    UI.message "existing version <= keep_num"
    return
  end
  
  # 进行删除操作
  app_version_info = versions_body['data'].first
  app_version_id = app_version_info['_id']

  delete_response = HTTParty.delete("#{base_url}/api/apps/#{team_id}/#{app_id}/versions/#{app_version_id}",{
    :headers => {'Content-Type'=>'application/json', 'Authorization'=>authorization}
  })

  # puts delete_response.body

  delete_version_body = JSON.parse(delete_response.body)

  if delete_version_body['success'] == true
    UI.message "delete version success"
  else
    UI.message "delete version failed"
  end

end
description() click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 107
def self.description
  "'fabulove' distribution system fastlane plugin"
end
details() click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 119
def self.details
  # Optional:
  "'fabulove' distribution system fastlane plugin"
end
get_token(base_url, username, password) click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 31
def self.get_token (base_url, username, password)
  response = HTTParty.post("#{base_url}/api/user/login",{
    :body => {"username" => username, "password" => password}.to_json,
    :headers => {'Content-Type'=>'application/json'}
  })

  body = JSON.parse(response.body)

  if body['success'] == true
    UI.message "get token success"          
  end
  
  return body['data']['token']
end
is_supported?(platform) click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 160
def self.is_supported?(platform)
  # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
  # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
  #
  # [:ios, :mac, :android].include?(platform)
  true
end
return_value() click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 115
def self.return_value
  # If your method provides a return value, you can describe here what it does
end
run(params) click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 8
def self.run(params)
  UI.message("The fabulove plugin is working!")
  
  base_url = params[:base_url]
  team_id = params[:team_id]
  file_path = params[:file_path]
  username = params[:username]
  password = params[:password]
  keep_num = params[:keep_app_versions_num]

  token = self.get_token(base_url, username, password)
  # UI.message "token:#{token}"

  app_id = self.upload_page(base_url, token, team_id, file_path)

  if app_id && keep_num > 0
    # 如果上传成功,则进行删除一个老的版本
    self.delete_old_version(base_url, token, app_id, keep_num, team_id)
  end
  
  UI.message "The fabulove action is end!"
end
upload_page(base_url, token, team_id, file_path) click to toggle source
# File lib/fastlane/plugin/fabulove/actions/fabulove_action.rb, line 46
def self.upload_page (base_url, token, team_id, file_path)
  authorization = "Bearer #{token}"
  response = HTTParty.post("#{base_url}/api/apps/#{team_id}/upload",{
    :headers => {'accept'=>'application/json', 'Authorization'=>authorization, 'Content-Type'=>'multipart/form-data'},
    :body => {file:File.open(file_path)}
  })

  # puts response.body

  body = JSON.parse(response.body)

  if body['success'] == false
    UI.message "upload failed,error message:#{body['message']}"
    return nil
  end
  UI.message "upload file success"
  return body['data']['app']['_id']
end