fastlane 2.126.0.beta.20190623200100 → 2.126.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +76 -76
  3. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  4. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  5. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -2
  6. data/fastlane/lib/fastlane/actions/oclint.rb +9 -2
  7. data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +34 -27
  8. data/fastlane/lib/fastlane/lane_manager_base.rb +4 -1
  9. data/fastlane/lib/fastlane/version.rb +1 -1
  10. data/fastlane/swift/Deliverfile.swift +1 -1
  11. data/fastlane/swift/DeliverfileProtocol.swift +3 -1
  12. data/fastlane/swift/Fastlane.swift +19 -5
  13. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  14. data/fastlane/swift/Gymfile.swift +1 -1
  15. data/fastlane/swift/Matchfile.swift +1 -1
  16. data/fastlane/swift/Precheckfile.swift +1 -1
  17. data/fastlane/swift/Scanfile.swift +1 -1
  18. data/fastlane/swift/ScanfileProtocol.swift +3 -1
  19. data/fastlane/swift/Screengrabfile.swift +1 -1
  20. data/fastlane/swift/Snapshotfile.swift +1 -1
  21. data/fastlane_core/lib/fastlane_core/.build_watcher.rb.swp +0 -0
  22. data/fastlane_core/lib/fastlane_core/build_watcher.rb +2 -2
  23. data/pilot/lib/pilot/.build_manager.rb.swp +0 -0
  24. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  25. data/pilot/lib/pilot/.tester_manager.rb.swp +0 -0
  26. data/pilot/lib/pilot/build_manager.rb +9 -14
  27. data/pilot/lib/pilot/manager.rb +2 -2
  28. data/pilot/lib/pilot/tester_exporter.rb +3 -3
  29. data/pilot/lib/pilot/tester_manager.rb +2 -2
  30. data/scan/lib/scan/options.rb +7 -1
  31. data/scan/lib/scan/test_command_generator.rb +1 -1
  32. data/snapshot/lib/assets/SnapshotHelper.swift +10 -4
  33. data/spaceship/lib/spaceship/connect_api.rb +42 -0
  34. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
  35. data/spaceship/lib/spaceship/connect_api/client.rb +178 -0
  36. data/spaceship/lib/spaceship/connect_api/model.rb +1 -15
  37. data/spaceship/lib/spaceship/connect_api/models/app.rb +97 -0
  38. data/spaceship/lib/spaceship/connect_api/models/beta_app_localization.rb +28 -0
  39. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_detail.rb +32 -0
  40. data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +26 -0
  41. data/spaceship/lib/spaceship/connect_api/models/beta_build_localization.rb +20 -0
  42. data/spaceship/lib/spaceship/connect_api/models/beta_build_metric.rb +24 -0
  43. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +41 -0
  44. data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +56 -0
  45. data/spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb +43 -0
  46. data/spaceship/lib/spaceship/connect_api/models/build.rb +144 -0
  47. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +56 -0
  48. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +36 -0
  49. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +46 -0
  50. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +37 -0
  51. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +48 -0
  52. data/spaceship/lib/spaceship/connect_api/models/device.rb +53 -0
  53. data/spaceship/lib/spaceship/connect_api/models/pre_release_version.rb +20 -0
  54. data/spaceship/lib/spaceship/connect_api/models/profile.rb +60 -0
  55. data/spaceship/lib/spaceship/connect_api/models/user.rb +50 -0
  56. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +59 -0
  57. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +48 -0
  58. data/spaceship/lib/spaceship/connect_api/response.rb +1 -1
  59. data/spaceship/lib/spaceship/connect_api/testflight/client.rb +18 -538
  60. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +314 -19
  61. data/spaceship/lib/spaceship/connect_api/token.rb +13 -1
  62. data/spaceship/lib/spaceship/connect_api/users/client.rb +33 -0
  63. data/spaceship/lib/spaceship/connect_api/users/users.rb +16 -0
  64. data/spaceship/lib/spaceship/test_flight/build.rb +2 -2
  65. data/spaceship/lib/spaceship/test_flight/build_trains.rb +5 -56
  66. metadata +64 -48
  67. data/spaceship/lib/spaceship/connect_api/testflight/base.rb +0 -41
  68. data/spaceship/lib/spaceship/connect_api/testflight/models/app.rb +0 -99
  69. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_app_localization.rb +0 -30
  70. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_app_review_detail.rb +0 -34
  71. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_app_review_submission.rb +0 -28
  72. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_build_localization.rb +0 -22
  73. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_build_metric.rb +0 -26
  74. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_group.rb +0 -43
  75. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_tester.rb +0 -58
  76. data/spaceship/lib/spaceship/connect_api/testflight/models/beta_tester_metric.rb +0 -45
  77. data/spaceship/lib/spaceship/connect_api/testflight/models/build.rb +0 -146
  78. data/spaceship/lib/spaceship/connect_api/testflight/models/build_beta_detail.rb +0 -58
  79. data/spaceship/lib/spaceship/connect_api/testflight/models/build_delivery.rb +0 -38
  80. data/spaceship/lib/spaceship/connect_api/testflight/models/pre_release_version.rb +0 -22
  81. data/spaceship/lib/spaceship/connect_api/testflight/models/user.rb +0 -52
@@ -1,26 +1,321 @@
1
1
  require 'spaceship/connect_api/testflight/client'
2
- require 'spaceship/connect_api/testflight/base'
3
-
4
- require 'spaceship/connect_api/testflight/models/app'
5
- require 'spaceship/connect_api/testflight/models/beta_app_localization'
6
- require 'spaceship/connect_api/testflight/models/beta_build_localization'
7
- require 'spaceship/connect_api/testflight/models/beta_build_metric'
8
- require 'spaceship/connect_api/testflight/models/beta_app_review_detail'
9
- require 'spaceship/connect_api/testflight/models/beta_app_review_submission'
10
- require 'spaceship/connect_api/testflight/models/beta_group'
11
- require 'spaceship/connect_api/testflight/models/beta_tester'
12
- require 'spaceship/connect_api/testflight/models/beta_tester_metric'
13
- require 'spaceship/connect_api/testflight/models/build'
14
- require 'spaceship/connect_api/testflight/models/build_delivery'
15
- require 'spaceship/connect_api/testflight/models/build_beta_detail'
16
- require 'spaceship/connect_api/testflight/models/pre_release_version'
17
- require 'spaceship/connect_api/testflight/models/user'
18
2
 
19
3
  module Spaceship
20
- module ConnectAPI
4
+ class ConnectAPI
21
5
  module TestFlight
22
- def self.client
23
- return Spaceship::ConnectAPI::TestFlight::Base.client
6
+ #
7
+ # apps
8
+ #
9
+
10
+ def get_apps(filter: {}, includes: nil, limit: nil, sort: nil)
11
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
12
+ Client.instance.get("apps", params)
13
+ end
14
+
15
+ def get_app(app_id: nil, includes: nil)
16
+ params = Client.instance.build_params(filter: nil, includes: includes, limit: nil, sort: nil)
17
+ Client.instance.get("apps/#{app_id}", params)
18
+ end
19
+
20
+ #
21
+ # betaAppLocalizations
22
+ #
23
+
24
+ def get_beta_app_localizations(filter: {}, includes: nil, limit: nil, sort: nil)
25
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
26
+ Client.instance.get("betaAppLocalizations", params)
27
+ end
28
+
29
+ def post_beta_app_localizations(app_id: nil, attributes: {})
30
+ body = {
31
+ data: {
32
+ attributes: attributes,
33
+ type: "betaAppLocalizations",
34
+ relationships: {
35
+ app: {
36
+ data: {
37
+ type: "apps",
38
+ id: app_id
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ Client.instance.post("betaAppLocalizations", body)
46
+ end
47
+
48
+ def patch_beta_app_localizations(localization_id: nil, attributes: {})
49
+ body = {
50
+ data: {
51
+ attributes: attributes,
52
+ id: localization_id,
53
+ type: "betaAppLocalizations"
54
+ }
55
+ }
56
+
57
+ Client.instance.patch("betaAppLocalizations/#{localization_id}", body)
58
+ end
59
+
60
+ #
61
+ # betaAppReviewDetails
62
+ #
63
+
64
+ def get_beta_app_review_detail(filter: {}, includes: nil, limit: nil, sort: nil)
65
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
66
+ Client.instance.get("betaAppReviewDetails", params)
67
+ end
68
+
69
+ def patch_beta_app_review_detail(app_id: nil, attributes: {})
70
+ body = {
71
+ data: {
72
+ attributes: attributes,
73
+ id: app_id,
74
+ type: "betaAppReviewDetails"
75
+ }
76
+ }
77
+
78
+ Client.instance.patch("betaAppReviewDetails/#{app_id}", body)
79
+ end
80
+
81
+ #
82
+ # betaAppReviewSubmissions
83
+ #
84
+
85
+ def get_beta_app_review_submissions(filter: {}, includes: nil, limit: nil, sort: nil, cursor: nil)
86
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort, cursor: cursor)
87
+ Client.instance.get("betaAppReviewSubmissions", params)
88
+ end
89
+
90
+ def post_beta_app_review_submissions(build_id: nil)
91
+ body = {
92
+ data: {
93
+ type: "betaAppReviewSubmissions",
94
+ relationships: {
95
+ build: {
96
+ data: {
97
+ type: "builds",
98
+ id: build_id
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ Client.instance.post("betaAppReviewSubmissions", body)
106
+ end
107
+
108
+ def delete_beta_app_review_submission(beta_app_review_submission_id: nil)
109
+ params = Client.instance.build_params(filter: nil, includes: nil, limit: nil, sort: nil, cursor: nil)
110
+ Client.instance.delete("betaAppReviewSubmissions/#{beta_app_review_submission_id}", params)
111
+ end
112
+
113
+ #
114
+ # betaBuildLocalizations
115
+ #
116
+
117
+ def get_beta_build_localizations(filter: {}, includes: nil, limit: nil, sort: nil)
118
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
119
+ Client.instance.get("betaBuildLocalizations", params)
120
+ end
121
+
122
+ def post_beta_build_localizations(build_id: nil, attributes: {})
123
+ body = {
124
+ data: {
125
+ attributes: attributes,
126
+ type: "betaBuildLocalizations",
127
+ relationships: {
128
+ build: {
129
+ data: {
130
+ type: "builds",
131
+ id: build_id
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ Client.instance.post("betaBuildLocalizations", body)
139
+ end
140
+
141
+ def patch_beta_build_localizations(localization_id: nil, feedbackEmail: nil, attributes: {})
142
+ body = {
143
+ data: {
144
+ attributes: attributes,
145
+ id: localization_id,
146
+ type: "betaBuildLocalizations"
147
+ }
148
+ }
149
+
150
+ Client.instance.patch("betaBuildLocalizations/#{localization_id}", body)
151
+ end
152
+
153
+ #
154
+ # betaBuildMetrics
155
+ #
156
+
157
+ def get_beta_build_metrics(filter: {}, includes: nil, limit: nil, sort: nil)
158
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
159
+ Client.instance.get("betaBuildMetrics", params)
160
+ end
161
+
162
+ #
163
+ # betaGroups
164
+ #
165
+
166
+ def get_beta_groups(filter: {}, includes: nil, limit: nil, sort: nil)
167
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
168
+ Client.instance.get("betaGroups", params)
169
+ end
170
+
171
+ def add_beta_groups_to_build(build_id: nil, beta_group_ids: [])
172
+ body = {
173
+ data: beta_group_ids.map do |id|
174
+ {
175
+ type: "betaGroups",
176
+ id: id
177
+ }
178
+ end
179
+ }
180
+
181
+ Client.instance.post("builds/#{build_id}/relationships/betaGroups", body)
182
+ end
183
+
184
+ #
185
+ # betaTesters
186
+ #
187
+
188
+ def get_beta_testers(filter: {}, includes: nil, limit: nil, sort: nil)
189
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
190
+ Client.instance.get("betaTesters", params)
191
+ end
192
+
193
+ # beta_testers - [{email: "", firstName: "", lastName: ""}]
194
+ def post_bulk_beta_tester_assignments(beta_group_id: nil, beta_testers: nil)
195
+ beta_testers || []
196
+
197
+ beta_testers.map do |tester|
198
+ tester[:errors] = []
199
+ end
200
+
201
+ body = {
202
+ data: {
203
+ attributes: {
204
+ betaTesters: beta_testers
205
+ },
206
+ relationships: {
207
+ betaGroup: {
208
+ data: {
209
+ type: "betaGroups",
210
+ id: beta_group_id
211
+ }
212
+ }
213
+ },
214
+ type: "bulkBetaTesterAssignments"
215
+ }
216
+ }
217
+
218
+ Client.instance.post("bulkBetaTesterAssignments", body)
219
+ end
220
+
221
+ def delete_beta_tester_from_apps(beta_tester_id: nil, app_ids: [])
222
+ body = {
223
+ data: app_ids.map do |id|
224
+ {
225
+ type: "apps",
226
+ id: id
227
+ }
228
+ end
229
+ }
230
+
231
+ delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
232
+ end
233
+
234
+ def delete_beta_tester_from_beta_groups(beta_tester_id: nil, beta_group_ids: [])
235
+ body = {
236
+ data: beta_group_ids.map do |id|
237
+ {
238
+ type: "betaGroups",
239
+ id: id
240
+ }
241
+ end
242
+ }
243
+
244
+ delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
245
+ end
246
+
247
+ #
248
+ # betaTesterMetrics
249
+ #
250
+
251
+ def get_beta_tester_metrics(filter: {}, includes: nil, limit: nil, sort: nil)
252
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
253
+ Client.instance.get("betaTesterMetrics", params)
254
+ end
255
+
256
+ #
257
+ # builds
258
+ #
259
+
260
+ def get_builds(filter: {}, includes: "buildBetaDetail,betaBuildMetrics", limit: 10, sort: "uploadedDate", cursor: nil)
261
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort, cursor: cursor)
262
+ Client.instance.get("builds", params)
263
+ end
264
+
265
+ def get_build(build_id: nil, includes: nil)
266
+ params = Client.instance.build_params(filter: nil, includes: includes, limit: nil, sort: nil, cursor: nil)
267
+ Client.instance.get("builds/#{build_id}", params)
268
+ end
269
+
270
+ def patch_builds(build_id: nil, attributes: {})
271
+ body = {
272
+ data: {
273
+ attributes: attributes,
274
+ id: build_id,
275
+ type: "builds"
276
+ }
277
+ }
278
+
279
+ Client.instance.patch("builds/#{build_id}", body)
280
+ end
281
+
282
+ #
283
+ # buildBetaDetails
284
+ #
285
+
286
+ def get_build_beta_details(filter: {}, includes: nil, limit: nil, sort: nil)
287
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
288
+ Client.instance.get("buildBetaDetails", params)
289
+ end
290
+
291
+ def patch_build_beta_details(build_beta_details_id: nil, attributes: {})
292
+ body = {
293
+ data: {
294
+ attributes: attributes,
295
+ id: build_beta_details_id,
296
+ type: "buildBetaDetails"
297
+ }
298
+ }
299
+
300
+ Client.instance.patch("buildBetaDetails/#{build_beta_details_id}", body)
301
+ end
302
+
303
+ #
304
+ # buildDeliveries
305
+ #
306
+
307
+ def get_build_deliveries(filter: {}, includes: nil, limit: nil, sort: nil)
308
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
309
+ Client.instance.get("buildDeliveries", params)
310
+ end
311
+
312
+ #
313
+ # preReleaseVersions
314
+ #
315
+
316
+ def get_pre_release_versions(filter: {}, includes: nil, limit: nil, sort: nil)
317
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
318
+ Client.instance.get("preReleaseVersions", params)
24
319
  end
25
320
  end
26
321
  end
@@ -8,7 +8,7 @@ require 'openssl'
8
8
  # openssl ec -in key.pem -pubout -out public_key.pem -aes256
9
9
 
10
10
  module Spaceship
11
- module ConnectAPI
11
+ class ConnectAPI
12
12
  class Token
13
13
  # maximum expiration supported by AppStore (20 minutes)
14
14
  MAX_TOKEN_DURATION = 1200
@@ -17,6 +17,18 @@ module Spaceship
17
17
  attr_reader :issuer_id
18
18
  attr_reader :text
19
19
 
20
+ def self.create(key_id: nil, issuer_id: nil, filepath: nil)
21
+ key_id ||= ENV['SPACESHIP_CONNECT_API_KEY_ID']
22
+ issuer_id ||= ENV['SPACESHIP_CONNECT_API_ISSUER_ID']
23
+ filepath ||= ENV['SPACESHIP_CONNECT_API_KEY_FILEPATH']
24
+
25
+ self.new(
26
+ key_id: key_id,
27
+ issuer_id: issuer_id,
28
+ key: OpenSSL::PKey::EC.new(File.read(filepath))
29
+ )
30
+ end
31
+
20
32
  def initialize(key_id: nil, issuer_id: nil, key: nil)
21
33
  @expiration = Time.now + MAX_TOKEN_DURATION
22
34
  @key_id = key_id
@@ -0,0 +1,33 @@
1
+ require_relative '../client'
2
+ require_relative '../../tunes/tunes_client'
3
+
4
+ module Spaceship
5
+ class ConnectAPI
6
+ module Users
7
+ class Client < Spaceship::ConnectAPI::Client
8
+ def self.instance
9
+ # Verify there is a token or a client that can be used
10
+ if Spaceship::ConnectAPI.token
11
+ if @client.nil? || @client.token != Spaceship::ConnectAPI.token
12
+ @client = Client.new(token: Spaceship::ConnectAPI.token)
13
+ end
14
+ elsif Spaceship::Tunes.client
15
+ # Initialize new client if new or if team changed
16
+ if @client.nil? || @client.team_id != Spaceship::Tunes.client.team_id
17
+ @client = Client.client_with_authorization_from(Spaceship::Tunes.client)
18
+ end
19
+ end
20
+
21
+ # Need to handle not having a client but this shouldn't ever happen
22
+ raise "Please login using `Spaceship::Tunes.login('user', 'password')`" unless @client
23
+
24
+ @client
25
+ end
26
+
27
+ def self.hostname
28
+ 'https://appstoreconnect.apple.com/iris/v1/'
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ require 'spaceship/connect_api/users/client'
2
+
3
+ module Spaceship
4
+ class ConnectAPI
5
+ module Users
6
+ #
7
+ # users
8
+ #
9
+
10
+ def get_users(filter: {}, includes: nil, limit: nil, sort: nil)
11
+ params = Client.instance.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
12
+ Client.instance.get("users", params)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -218,7 +218,7 @@ module Spaceship
218
218
  return if approved?
219
219
 
220
220
  build = find_app_store_connect_build
221
- Spaceship::ConnectAPI::TestFlight.client.post_beta_app_review_submissions(build_id: build["id"])
221
+ Spaceship::ConnectAPI.post_beta_app_review_submissions(build_id: build["id"])
222
222
  end
223
223
 
224
224
  def expire!
@@ -231,7 +231,7 @@ module Spaceship
231
231
 
232
232
  # Bridges the TestFlight::Build to the App Store Connect API build
233
233
  def find_app_store_connect_build
234
- resp = Spaceship::ConnectAPI::TestFlight.client.get_builds(filter: { expired: false, processingState: "PROCESSING,VALID", version: self.build_version, "preReleaseVersion.version" => self.train_version, app: app_id })
234
+ resp = Spaceship::ConnectAPI.get_builds(filter: { expired: false, processingState: "PROCESSING,VALID", version: self.build_version, "preReleaseVersion.version" => self.train_version, app: app_id })
235
235
  resp.first
236
236
  end
237
237
  end
@@ -13,65 +13,14 @@ module Spaceship::TestFlight
13
13
  # See `Spaceship::TestFlight::Build#reload`
14
14
 
15
15
  def self.all(app_id: nil, platform: nil, retry_count: 3)
16
- client = Spaceship::ConnectAPI::TestFlight.client
17
-
18
- builds = []
19
- included = []
20
- cursor = nil
21
-
22
- loop do
23
- builds_resp = client.get_builds(filter: { app: app_id, processingState: "VALID,PROCESSING,FAILED,INVALID" }, limit: 100, sort: "uploadedDate", includes: "preReleaseVersion,app", cursor: cursor)
24
- builds += builds_resp["data"]
25
- included += (builds_resp["included"] || [])
26
-
27
- next_page = builds_resp["links"]["next"]
28
- break if next_page.nil?
29
-
30
- uri = URI.parse(next_page)
31
- params = CGI.parse(uri.query)
32
- cursor = params["cursor"].first
33
-
34
- break if cursor.nil?
35
- end
36
-
37
- # Load with all of the data
38
- builds.map do |build|
39
- r = build["relationships"]["app"]["data"]
40
- build["app"] = included.find { |h| h["type"] == r["type"] && h["id"] == r["id"] }
41
-
42
- r = build["relationships"]["preReleaseVersion"]["data"]
43
- build["preReleaseVersion"] = included.find { |h| h["type"] == r["type"] && h["id"] == r["id"] }
44
-
45
- build
46
- end
47
-
48
- # Map to testflight build response????
49
- train_builds = builds.map do |build|
50
- h = {}
51
-
52
- h['buildVersion'] = build["attributes"]["version"]
53
- h['uploadDate'] = build["attributes"]["uploadedDate"]
54
-
55
- processing_state = build["attributes"]["processingState"]
56
- if processing_state == "VALID"
57
- h['externalState'] = Spaceship::TestFlight::Build::BUILD_STATES[:active]
58
- elsif processing_state == "PROCESSING"
59
- h['externalState'] = Spaceship::TestFlight::Build::BUILD_STATES[:processing]
60
- end
61
-
62
- h['appAdamId'] = build["app"]["id"]
63
- h['bundleId'] = build["app"]["attributes"]["bundleId"]
64
-
65
- h['trainVersion'] = build["preReleaseVersion"]["attributes"]["version"]
66
-
67
- h
68
- end
16
+ resps = Spaceship::ConnectAPI.get_builds(filter: { app: app_id, processingState: "VALID,PROCESSING,FAILED,INVALID" }, limit: 100, sort: "uploadedDate", includes: "preReleaseVersion,app").all_pages
17
+ connect_builds = resps.map(&:to_models).flatten
69
18
 
70
19
  trains = {}
71
- train_builds.each do |build|
72
- train_version = build["trainVersion"]
20
+ connect_builds.each do |connect_build|
21
+ train_version = connect_build.app_version
73
22
  trains[train_version] ||= []
74
- trains[train_version] << Spaceship::TestFlight::Build.new(build)
23
+ trains[train_version] << connect_build.to_testflight_build
75
24
  end
76
25
 
77
26
  self.new(trains)