spaceship 0.21.0 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/spaceship/client.rb +2 -2
- data/lib/spaceship/portal/certificate.rb +11 -0
- data/lib/spaceship/tunes/app_version.rb +7 -0
- data/lib/spaceship/tunes/app_version_common.rb +31 -0
- data/lib/spaceship/tunes/application.rb +10 -15
- data/lib/spaceship/tunes/tunes.rb +1 -0
- data/lib/spaceship/tunes/tunes_client.rb +12 -14
- data/lib/spaceship/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ce52c239b938c9368777decf6b3b239a32c93de
|
4
|
+
data.tar.gz: 6c5cc9ef074cc1216b07d76c2454ea8fb593e501
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f2e0c03d6ecb1695326598096e8356d6894db28c206d55c27898ba720f87c9c41dfd6c429b31bd41a43404201252691f640f3be6aa0b25e103a901cf6857f46
|
7
|
+
data.tar.gz: f7a42c64841df2afd1cef01e8660b2e69ecc76c6d40a847d01033e0b6a95b3010786fc206bcd717b98884c397fd661faf13aeca98f8b7d1488cd6b046781a995
|
data/lib/spaceship/client.rb
CHANGED
@@ -193,7 +193,7 @@ module Spaceship
|
|
193
193
|
|
194
194
|
def with_retry(tries = 5, &_block)
|
195
195
|
return yield
|
196
|
-
rescue Faraday::Error::ConnectionFailed, Faraday::Error::TimeoutError, AppleTimeoutError => ex # New Faraday version: Faraday::TimeoutError => ex
|
196
|
+
rescue Faraday::Error::ConnectionFailed, Faraday::Error::TimeoutError, AppleTimeoutError, Errno::EPIPE => ex # New Faraday version: Faraday::TimeoutError => ex
|
197
197
|
unless (tries -= 1).zero?
|
198
198
|
logger.warn("Timeout received: '#{ex.message}'. Retrying after 3 seconds (remaining: #{tries})...")
|
199
199
|
sleep 3 unless defined? SpecHelper
|
@@ -201,7 +201,7 @@ module Spaceship
|
|
201
201
|
end
|
202
202
|
raise ex # re-raise the exception
|
203
203
|
rescue UnauthorizedAccessError => ex
|
204
|
-
if @loggedin
|
204
|
+
if @loggedin && !(tries -= 1).zero?
|
205
205
|
msg = "Auth error received: '#{ex.message}'. Login in again then retrying after 3 seconds (remaining: #{tries})..."
|
206
206
|
puts msg if $verbose
|
207
207
|
logger.warn msg
|
@@ -155,6 +155,16 @@ module Spaceship
|
|
155
155
|
"4APLUP237T" => ApplePay
|
156
156
|
}
|
157
157
|
|
158
|
+
OLDER_IOS_CERTIFICATE_TYPES = [
|
159
|
+
# those are also sent by the browser, but not sure what they represent
|
160
|
+
"T44PTHVNID",
|
161
|
+
"DZQUP8189Y",
|
162
|
+
"FGQUP4785Z",
|
163
|
+
"S5WE21TULA",
|
164
|
+
"3BQKVH9I2X", # ProductionPush,
|
165
|
+
"FUOY7LWJET"
|
166
|
+
]
|
167
|
+
|
158
168
|
MAC_CERTIFICATE_TYPE_IDS = {
|
159
169
|
"749Y1QAGU7" => MacDevelopment,
|
160
170
|
"HXZEUKP0FP" => MacAppDistribution,
|
@@ -239,6 +249,7 @@ module Spaceship
|
|
239
249
|
if self == Certificate # are we the base-class?
|
240
250
|
type_ids = mac ? MAC_CERTIFICATE_TYPE_IDS : IOS_CERTIFICATE_TYPE_IDS
|
241
251
|
types = type_ids.keys
|
252
|
+
types += OLDER_IOS_CERTIFICATE_TYPES unless mac
|
242
253
|
else
|
243
254
|
types = [CERTIFICATE_TYPE_IDS.key(self)]
|
244
255
|
mac = MAC_CERTIFICATE_TYPE_IDS.values.include? self
|
@@ -159,8 +159,15 @@ module Spaceship
|
|
159
159
|
# @param app_id (String) The unique Apple ID of this app
|
160
160
|
# @param is_live (Boolean)
|
161
161
|
def find(application, app_id, is_live)
|
162
|
+
# we only support applications
|
163
|
+
platform = Spaceship::Tunes::AppVersionCommon.find_platform(application.raw_data['versionSets'])
|
164
|
+
raise "We do not support BUNDLE types right now" if platform['type'] == 'BUNDLE'
|
165
|
+
|
166
|
+
# too bad the "id" field is empty, it forces us to make more requests to the server
|
167
|
+
# these could also be cached
|
162
168
|
attrs = client.app_version(app_id, is_live)
|
163
169
|
return nil unless attrs
|
170
|
+
|
164
171
|
attrs.merge!(application: application)
|
165
172
|
attrs.merge!(is_live: is_live)
|
166
173
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Spaceship
|
2
|
+
module Tunes
|
3
|
+
# internal to spaceship
|
4
|
+
# Represents the common structure between application['versionSets'] and app_version['platform']
|
5
|
+
class AppVersionCommon
|
6
|
+
class << self
|
7
|
+
def find_version_id(platform, is_live)
|
8
|
+
version = platform[(is_live ? 'deliverableVersion' : 'inFlightVersion')]
|
9
|
+
return nil unless version
|
10
|
+
version['id']
|
11
|
+
end
|
12
|
+
|
13
|
+
def find_platform(versions)
|
14
|
+
# We only support platforms that exist ATM
|
15
|
+
platform = versions.detect do |p|
|
16
|
+
['ios', 'osx', 'appletvos'].include? p['platformString']
|
17
|
+
end
|
18
|
+
|
19
|
+
raise "Could not find platform ios, osx or appletvos for app #{app_id}" unless platform
|
20
|
+
|
21
|
+
# If your app has versions for both iOS and tvOS we will default to returning the iOS version for now.
|
22
|
+
# This is intentional as we need to do more work to support apps that have hybrid versions.
|
23
|
+
if versions.length > 1
|
24
|
+
platform = versions.detect { |p| p['platformString'] == "ios" }
|
25
|
+
end
|
26
|
+
platform
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -11,11 +11,6 @@ module Spaceship
|
|
11
11
|
# "Spaceship App"
|
12
12
|
attr_accessor :name
|
13
13
|
|
14
|
-
# @return (String) the supported platform of this app
|
15
|
-
# @example
|
16
|
-
# "ios"
|
17
|
-
attr_accessor :platform
|
18
|
-
|
19
14
|
# @return (String) The Vendor ID provided by iTunes Connect
|
20
15
|
# @example
|
21
16
|
# "1435592086"
|
@@ -42,7 +37,6 @@ module Spaceship
|
|
42
37
|
attr_mapping(
|
43
38
|
'adamId' => :apple_id,
|
44
39
|
'name' => :name,
|
45
|
-
'appType' => :platform,
|
46
40
|
'vendorId' => :vendor_id,
|
47
41
|
'bundleId' => :bundle_id,
|
48
42
|
'lastModifiedDate' => :last_modified,
|
@@ -100,13 +94,6 @@ module Spaceship
|
|
100
94
|
# @return (Spaceship::AppVersion) Receive the version that is currently live on the
|
101
95
|
# App Store. You can't modify all values there, so be careful.
|
102
96
|
def live_version
|
103
|
-
if (raw_data['versions'] || []).count == 1
|
104
|
-
v = raw_data['versions'].last
|
105
|
-
if ['Prepare for Upload', 'prepareForUpload'].include?(v['state']) # this only applies for the initial version
|
106
|
-
return nil
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
97
|
Spaceship::AppVersion.find(self, self.apple_id, true)
|
111
98
|
end
|
112
99
|
|
@@ -116,9 +103,9 @@ module Spaceship
|
|
116
103
|
end
|
117
104
|
|
118
105
|
# @return (Spaceship::AppVersion) This will return the `edit_version` if available
|
119
|
-
# and fallback to the `
|
106
|
+
# and fallback to the `live_version`. Use this to just access the latest data
|
120
107
|
def latest_version
|
121
|
-
edit_version || live_version
|
108
|
+
edit_version || live_version
|
122
109
|
end
|
123
110
|
|
124
111
|
# @return (String) An URL to this specific resource. You can enter this URL into your browser
|
@@ -133,6 +120,14 @@ module Spaceship
|
|
133
120
|
client.get_resolution_center(apple_id, platform)
|
134
121
|
end
|
135
122
|
|
123
|
+
# kept for backward compatibility
|
124
|
+
# tries to guess the platform of the currently submitted apps
|
125
|
+
# note that as ITC now supports multiple app types, this might break
|
126
|
+
# if your app supports more than one
|
127
|
+
def platform
|
128
|
+
Spaceship::Tunes::AppVersionCommon.find_platform(raw_data['versionSets'])['platformString']
|
129
|
+
end
|
130
|
+
|
136
131
|
def details
|
137
132
|
attrs = client.app_details(apple_id)
|
138
133
|
attrs.merge!(application: self)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spaceship/tunes/tunes_base'
|
2
2
|
require 'spaceship/tunes/application'
|
3
3
|
require 'spaceship/tunes/app_version'
|
4
|
+
require 'spaceship/tunes/app_version_common'
|
4
5
|
require 'spaceship/tunes/app_submission'
|
5
6
|
require 'spaceship/tunes/tunes_client'
|
6
7
|
require 'spaceship/tunes/language_item'
|
@@ -324,24 +324,22 @@ module Spaceship
|
|
324
324
|
r = request(:get, "ra/apps/#{app_id}/overview")
|
325
325
|
platforms = parse_response(r, 'data')['platforms']
|
326
326
|
|
327
|
-
|
328
|
-
|
329
|
-
['ios', 'osx', 'appletvos'].include? p['platformString']
|
330
|
-
end
|
331
|
-
|
332
|
-
raise "Could not find platform ios, osx or appletvos for app #{app_id}" unless platform
|
327
|
+
platform = Spaceship::Tunes::AppVersionCommon.find_platform(platforms)
|
328
|
+
return nil unless platform
|
333
329
|
|
334
|
-
|
335
|
-
|
336
|
-
if platforms.length > 1
|
337
|
-
platform = platforms.detect { |p| p['platformString'] == "ios" }
|
338
|
-
end
|
330
|
+
version_id = Spaceship::Tunes::AppVersionCommon.find_version_id(platform, is_live)
|
331
|
+
return nil unless version_id
|
339
332
|
|
340
|
-
version = platform[(is_live ? 'deliverableVersion' : 'inFlightVersion')]
|
341
|
-
return nil unless version
|
342
|
-
version_id = version['id']
|
343
333
|
version_platform = platform['platformString']
|
344
334
|
|
335
|
+
app_version_data(app_id, version_platform: version_platform, version_id: version_id)
|
336
|
+
end
|
337
|
+
|
338
|
+
def app_version_data(app_id, version_platform: nil, version_id:nil)
|
339
|
+
raise "app_id is required" unless app_id
|
340
|
+
raise "version_platform is required" unless version_platform
|
341
|
+
raise "version_id is required" unless version_id
|
342
|
+
|
345
343
|
r = request(:get, "ra/apps/#{app_id}/platforms/#{version_platform}/versions/#{version_id}")
|
346
344
|
parse_response(r, 'data')
|
347
345
|
end
|
data/lib/spaceship/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spaceship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.21.
|
4
|
+
version: 0.21.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: credentials_manager
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- lib/spaceship/tunes/app_submission.rb
|
292
292
|
- lib/spaceship/tunes/app_trailer.rb
|
293
293
|
- lib/spaceship/tunes/app_version.rb
|
294
|
+
- lib/spaceship/tunes/app_version_common.rb
|
294
295
|
- lib/spaceship/tunes/app_version_ref.rb
|
295
296
|
- lib/spaceship/tunes/application.rb
|
296
297
|
- lib/spaceship/tunes/build.rb
|
@@ -328,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
328
329
|
version: '0'
|
329
330
|
requirements: []
|
330
331
|
rubyforge_project:
|
331
|
-
rubygems_version: 2.
|
332
|
+
rubygems_version: 2.2.2
|
332
333
|
signing_key:
|
333
334
|
specification_version: 4
|
334
335
|
summary: Because you would rather spend your time building stuff than fighting provisioning
|