Class: Fastlane::Actions::LastFabricVersionCodeAction

Inherits:
Action
  • Object
show all
Defined in:
lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb

Class Method Summary collapse

Class Method Details

.authorsObject



57
58
59
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 57

def self.authors
  ["Andrés Hernández"]
end

.available_optionsObject



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 70

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :username,
                                description: "Your Fabric username",
                                optional: false,
                                type: String),
    FastlaneCore::ConfigItem.new(key: :password,
                                description: "Your Fabric password",
                                optional: false,
                                type: String),
    FastlaneCore::ConfigItem.new(key: :app_package,
                                description: "Your Fabric app package",
                                optional: false,
                                type: String)
  ]
end

.descriptionObject



53
54
55
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 53

def self.description
  "Get the last Fabric version code for your Android app"
end

.detailsObject



65
66
67
68
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 65

def self.details
  # Optional:
  "Get the last Fabric version code for your Android app"
end

.is_supported?(platform) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 87

def self.is_supported?(platform)
  [:android].include?(platform)
end

.return_valueObject



61
62
63
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 61

def self.return_value
  "The last Fabric version code"
end

.run(params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fastlane/plugin/last_fabric_version_code/actions/last_fabric_version_code_action.rb', line 7

def self.run(params)
  auth_url = "https://fabric.io/oauth/token"
  auth_body='{"grant_type":"password","scope":"apps beta","username":"' + params[:username] + '","password":"' + params[:password] + '","client_id":"2c18f8a77609ee6bbac9e53f3768fedc45fb96be0dbcb41defa706dc57d9c931","client_secret":"092ed1cdde336647b13d44178932cba10911577faf0eda894896188a7d900cc9"}'
  auth_uri = URI.parse(auth_url)
  auth_http = Net::HTTP.new(auth_uri.host, auth_uri.port)
  auth_http.use_ssl = true
  auth_request = Net::HTTP::Post.new(auth_uri.request_uri)
  auth_request.add_field('Content-Type', 'application/json')
  auth_request.body = auth_body
  auth_response = auth_http.request(auth_request)
  auth_response_parsed = JSON.parse(auth_response.body)
  auth_token = auth_response_parsed['access_token']

  organization_id = ''
  app_id = ''

  apps_url = "https://fabric.io/api/v2/apps"
  apps_uri = URI.parse(apps_url)
  apps_http = Net::HTTP.new(apps_uri.host, apps_uri.port)
  apps_http.use_ssl = true
  apps_request = Net::HTTP::Get.new(apps_uri.request_uri)
  apps_request.add_field('Authorization', 'Bearer ' + auth_token)
  apps_response = apps_http.request(apps_request)
  apps_parsed = JSON.parse(apps_response.body)
  apps_parsed.map do |app|
    if app['bundle_identifier'].casecmp(params[:app_package]).zero?
      organization_id = app['organization_id']
      app_id = app['id']
    end
  end

  builds_url = "https://fabric.io/api/v2/organizations/#{organization_id}/apps/#{app_id}/beta_distribution/releases"
  builds_uri = URI.parse(builds_url)
  builds_http = Net::HTTP.new(builds_uri.host, builds_uri.port)
  builds_http.use_ssl = true
  builds_request = Net::HTTP::Get.new(builds_uri.request_uri)
  builds_request.add_field('Authorization', 'Bearer ' + auth_token)
  builds_response = builds_http.request(builds_request)
  builds_parsed = JSON.parse(builds_response.body)
  last_version_code = builds_parsed['instances'][0]['build_version']['build_version']

  UI.message("Last Fabric version code: #{last_version_code}")

  return last_version_code.to_i
end