spaceship 0.3.4 → 0.4.0
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/README.md +16 -15
- data/lib/spaceship.rb +2 -1
- data/lib/spaceship/base.rb +0 -1
- data/lib/spaceship/client.rb +71 -69
- data/lib/spaceship/helper/net_http_generic_request.rb +1 -1
- data/lib/spaceship/launcher.rb +19 -14
- data/lib/spaceship/portal/app.rb +23 -9
- data/lib/spaceship/portal/app_group.rb +77 -0
- data/lib/spaceship/portal/app_service.rb +222 -0
- data/lib/spaceship/portal/certificate.rb +2 -2
- data/lib/spaceship/portal/device.rb +7 -7
- data/lib/spaceship/portal/portal.rb +3 -1
- data/lib/spaceship/portal/portal_base.rb +1 -1
- data/lib/spaceship/portal/portal_client.rb +64 -10
- data/lib/spaceship/portal/provisioning_profile.rb +28 -54
- data/lib/spaceship/portal/spaceship.rb +27 -9
- data/lib/spaceship/portal/ui/select_team.rb +6 -8
- data/lib/spaceship/tunes/app_screenshot.rb +1 -1
- data/lib/spaceship/tunes/app_status.rb +5 -6
- data/lib/spaceship/tunes/app_submission.rb +24 -23
- data/lib/spaceship/tunes/app_version.rb +27 -34
- data/lib/spaceship/tunes/application.rb +24 -25
- data/lib/spaceship/tunes/build.rb +6 -7
- data/lib/spaceship/tunes/build_train.rb +2 -2
- data/lib/spaceship/tunes/language_converter.rb +14 -13
- data/lib/spaceship/tunes/language_item.rb +1 -1
- data/lib/spaceship/tunes/processing_build.rb +1 -1
- data/lib/spaceship/tunes/spaceship.rb +5 -5
- data/lib/spaceship/tunes/tester.rb +14 -15
- data/lib/spaceship/tunes/tunes_client.rb +61 -61
- data/lib/spaceship/ui.rb +1 -2
- data/lib/spaceship/version.rb +2 -2
- metadata +18 -2
@@ -124,7 +124,6 @@ module Spaceship
|
|
124
124
|
# @return (Hash) Represents the screenshots of this app version (read-only)
|
125
125
|
attr_reader :screenshots
|
126
126
|
|
127
|
-
|
128
127
|
attr_mapping({
|
129
128
|
'canBetaTest' => :can_beta_test,
|
130
129
|
'canPrepareForUpload' => :can_prepare_for_upload,
|
@@ -229,7 +228,6 @@ module Spaceship
|
|
229
228
|
"https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/#{self.application.apple_id}/" + (self.is_live? ? "cur" : "")
|
230
229
|
end
|
231
230
|
|
232
|
-
|
233
231
|
# Private methods
|
234
232
|
def setup
|
235
233
|
# Properly parse the AppStatus
|
@@ -244,7 +242,6 @@ module Spaceship
|
|
244
242
|
end
|
245
243
|
end
|
246
244
|
|
247
|
-
|
248
245
|
# Prefill name, keywords, etc...
|
249
246
|
def unfold_languages
|
250
247
|
{
|
@@ -271,64 +268,60 @@ module Spaceship
|
|
271
268
|
end
|
272
269
|
|
273
270
|
def primary_category=(value)
|
274
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
275
|
-
super(value)
|
276
|
-
end
|
277
|
-
|
278
|
-
def primary_category=(value)
|
279
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
271
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
280
272
|
super(value)
|
281
273
|
end
|
282
274
|
|
283
275
|
def primary_first_sub_category=(value)
|
284
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
276
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
285
277
|
super(value)
|
286
278
|
end
|
287
279
|
|
288
280
|
def primary_second_sub_category=(value)
|
289
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
281
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
290
282
|
super(value)
|
291
283
|
end
|
292
284
|
|
293
285
|
def secondary_category=(value)
|
294
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
286
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
295
287
|
super(value)
|
296
288
|
end
|
297
289
|
|
298
290
|
def secondary_first_sub_category=(value)
|
299
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
291
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
300
292
|
super(value)
|
301
293
|
end
|
302
294
|
|
303
295
|
def secondary_second_sub_category=(value)
|
304
|
-
value = "MZGenre.#{value}" unless value.include?"MZGenre"
|
296
|
+
value = "MZGenre.#{value}" unless value.include? "MZGenre"
|
305
297
|
super(value)
|
306
298
|
end
|
307
299
|
|
308
300
|
private
|
301
|
+
|
309
302
|
# generates the nested data structure to represent screenshots
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
end
|
303
|
+
def setup_screenshots(row)
|
304
|
+
screenshots = row.fetch('screenshots', {}).fetch('value', nil)
|
305
|
+
return [] unless screenshots
|
306
|
+
|
307
|
+
result = []
|
308
|
+
|
309
|
+
screenshots.each do |device_type, value|
|
310
|
+
value['value'].each do |screenshot|
|
311
|
+
screenshot = screenshot['value']
|
312
|
+
result << Tunes::AppScreenshot.new({
|
313
|
+
url: screenshot['url'],
|
314
|
+
thumbnail_url: screenshot['thumbNailUrl'],
|
315
|
+
sort_order: screenshot['sortOrder'],
|
316
|
+
original_file_name: screenshot['originalFileName'],
|
317
|
+
device_type: device_type,
|
318
|
+
language: row['language']
|
319
|
+
})
|
328
320
|
end
|
329
|
-
|
330
|
-
return result
|
331
321
|
end
|
322
|
+
|
323
|
+
return result
|
324
|
+
end
|
332
325
|
end
|
333
326
|
end
|
334
327
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Spaceship
|
2
2
|
module Tunes
|
3
3
|
class Application < TunesBase
|
4
|
-
|
4
|
+
|
5
5
|
# @return (String) The App identifier of this app, provided by iTunes Connect
|
6
|
-
# @example
|
6
|
+
# @example
|
7
7
|
# "1013943394"
|
8
8
|
attr_accessor :apple_id
|
9
9
|
|
@@ -13,17 +13,17 @@ module Spaceship
|
|
13
13
|
attr_accessor :name
|
14
14
|
|
15
15
|
# @return (String) the supported platform of this app
|
16
|
-
# @example
|
16
|
+
# @example
|
17
17
|
# "ios"
|
18
18
|
attr_accessor :platform
|
19
19
|
|
20
20
|
# @return (String) The Vendor ID provided by iTunes Connect
|
21
|
-
# @example
|
21
|
+
# @example
|
22
22
|
# "1435592086"
|
23
23
|
attr_accessor :vendor_id
|
24
24
|
|
25
25
|
# @return (String) The bundle_id (app identifier) of your app
|
26
|
-
# @example
|
26
|
+
# @example
|
27
27
|
# "com.krausefx.app"
|
28
28
|
attr_accessor :bundle_id
|
29
29
|
|
@@ -34,7 +34,7 @@ module Spaceship
|
|
34
34
|
attr_accessor :issues_count
|
35
35
|
|
36
36
|
# @return (String) The URL to a low resolution app icon of this app (340x340px). Might be nil
|
37
|
-
# @example
|
37
|
+
# @example
|
38
38
|
# "https://is1-ssl.mzstatic.com/image/thumb/Purple7/v4/cd/a3/e2/cda3e2ac-4034-c6af-ee0c-3e4d9a0bafaa/pr_source.png/340x340bb-80.png"
|
39
39
|
# @example
|
40
40
|
# nil
|
@@ -50,7 +50,7 @@ module Spaceship
|
|
50
50
|
'issuesCount' => :issues_count,
|
51
51
|
'iconUrl' => :app_icon_preview_url
|
52
52
|
)
|
53
|
-
|
53
|
+
|
54
54
|
class << self
|
55
55
|
# Create a new object based on a hash.
|
56
56
|
# This is used to create a new object based on the server response.
|
@@ -72,22 +72,22 @@ module Spaceship
|
|
72
72
|
end
|
73
73
|
|
74
74
|
# Creates a new application on iTunes Connect
|
75
|
-
# @param name (String): The name of your app as it will appear on the App Store.
|
75
|
+
# @param name (String): The name of your app as it will appear on the App Store.
|
76
76
|
# This can't be longer than 255 characters.
|
77
|
-
# @param primary_language (String): If localized app information isn't available in an
|
77
|
+
# @param primary_language (String): If localized app information isn't available in an
|
78
78
|
# App Store territory, the information from your primary language will be used instead.
|
79
|
-
# @param version (String): The version number is shown on the App Store and should
|
79
|
+
# @param version (String): The version number is shown on the App Store and should
|
80
80
|
# match the one you used in Xcode.
|
81
81
|
# @param sku (String): A unique ID for your app that is not visible on the App Store.
|
82
|
-
# @param bundle_id (String): The bundle ID must match the one you used in Xcode. It
|
82
|
+
# @param bundle_id (String): The bundle ID must match the one you used in Xcode. It
|
83
83
|
# can't be changed after you submit your first build.
|
84
84
|
# @param company_name (String): The company name or developer name to display on the App Store for your apps.
|
85
85
|
# It cannot be changed after you create your first app.
|
86
86
|
def create!(name: nil, primary_language: nil, version: nil, sku: nil, bundle_id: nil, bundle_id_suffix: nil, company_name: nil)
|
87
|
-
client.create_application!(name: name,
|
88
|
-
primary_language: primary_language,
|
89
|
-
version: version,
|
90
|
-
sku: sku,
|
87
|
+
client.create_application!(name: name,
|
88
|
+
primary_language: primary_language,
|
89
|
+
version: version,
|
90
|
+
sku: sku,
|
91
91
|
bundle_id: bundle_id,
|
92
92
|
bundle_id_suffix: bundle_id_suffix,
|
93
93
|
company_name: company_name)
|
@@ -99,7 +99,7 @@ module Spaceship
|
|
99
99
|
#####################################################
|
100
100
|
|
101
101
|
# @return (Spaceship::AppVersion) Receive the version that is currently live on the
|
102
|
-
# App Store. You can't modify all values there, so be careful.
|
102
|
+
# App Store. You can't modify all values there, so be careful.
|
103
103
|
def live_version
|
104
104
|
v = Spaceship::AppVersion.find(self, self.apple_id, true)
|
105
105
|
end
|
@@ -127,7 +127,7 @@ module Spaceship
|
|
127
127
|
"https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/#{self.apple_id}"
|
128
128
|
end
|
129
129
|
|
130
|
-
# @return (Hash) Contains the reason for rejection.
|
130
|
+
# @return (Hash) Contains the reason for rejection.
|
131
131
|
# if everything is alright, the result will be
|
132
132
|
# `{"sectionErrorKeys"=>[], "sectionInfoKeys"=>[], "sectionWarningKeys"=>[], "replyConstraints"=>{"minLength"=>1, "maxLength"=>4000}, "appNotes"=>{"threads"=>[]}, "betaNotes"=>{"threads"=>[]}, "appMessages"=>{"threads"=>[]}}`
|
133
133
|
def resolution_center
|
@@ -137,7 +137,7 @@ module Spaceship
|
|
137
137
|
#####################################################
|
138
138
|
# @!group Modifying
|
139
139
|
#####################################################
|
140
|
-
|
140
|
+
|
141
141
|
# Create a new version of your app
|
142
142
|
# Since we have stored the outdated raw_data, we need to refresh this object
|
143
143
|
# otherwise `edit_version` will return nil
|
@@ -166,7 +166,7 @@ module Spaceship
|
|
166
166
|
# Those builds can also be the builds that are stuck on iTC.
|
167
167
|
def pre_processing_builds
|
168
168
|
data = client.build_trains(apple_id) # we need to fetch all trains here to get the builds
|
169
|
-
|
169
|
+
|
170
170
|
data.fetch('processingBuilds', []).collect do |attrs|
|
171
171
|
attrs.merge!(build_train: self)
|
172
172
|
Tunes::ProcessingBuild.factory(attrs)
|
@@ -177,7 +177,7 @@ module Spaceship
|
|
177
177
|
# this include pre-processing or standard processing
|
178
178
|
def all_processing_builds
|
179
179
|
builds = self.pre_processing_builds
|
180
|
-
|
180
|
+
|
181
181
|
self.build_trains.each do |version_number, train|
|
182
182
|
train.processing_builds.each do |build|
|
183
183
|
builds << build
|
@@ -203,13 +203,13 @@ module Spaceship
|
|
203
203
|
#####################################################
|
204
204
|
# @!group Submit for Review
|
205
205
|
#####################################################
|
206
|
-
|
206
|
+
|
207
207
|
def create_submission
|
208
208
|
version = self.latest_version
|
209
209
|
if version.nil?
|
210
210
|
raise "Could not find a valid version to submit for review"
|
211
211
|
end
|
212
|
-
|
212
|
+
|
213
213
|
Spaceship::AppSubmission.create(self, self.apple_id, version)
|
214
214
|
end
|
215
215
|
|
@@ -229,7 +229,6 @@ module Spaceship
|
|
229
229
|
# @!group General
|
230
230
|
#####################################################
|
231
231
|
def setup
|
232
|
-
|
233
232
|
end
|
234
233
|
|
235
234
|
#####################################################
|
@@ -273,8 +272,8 @@ module Spaceship
|
|
273
272
|
def add_external_tester!(email: nil, first_name: nil, last_name: nil)
|
274
273
|
raise "Tester is already on #{self.name} betatesters" if find_external_tester(email)
|
275
274
|
|
276
|
-
tester = Tunes::Tester.external.find(email) || Tunes::Tester.external.create!(email: email,
|
277
|
-
first_name: first_name,
|
275
|
+
tester = Tunes::Tester.external.find(email) || Tunes::Tester.external.create!(email: email,
|
276
|
+
first_name: first_name,
|
278
277
|
last_name: last_name)
|
279
278
|
tester.add_to_app!(self.apple_id)
|
280
279
|
end
|
@@ -6,7 +6,7 @@ module Spaceship
|
|
6
6
|
#####################################################
|
7
7
|
# @!group General metadata
|
8
8
|
#####################################################
|
9
|
-
|
9
|
+
|
10
10
|
# @return (Spaceship::Tunes::BuildTrain) A reference to the build train this build is contained in
|
11
11
|
attr_accessor :build_train
|
12
12
|
|
@@ -44,11 +44,10 @@ module Spaceship
|
|
44
44
|
# this is only true after the build was approved by Apple
|
45
45
|
attr_accessor :external_testing_enabled
|
46
46
|
|
47
|
-
|
48
47
|
# @return (Bool) Does this build support WatchKit?
|
49
48
|
attr_accessor :watch_kit_enabled
|
50
49
|
|
51
|
-
# @return (Bool):
|
50
|
+
# @return (Bool):
|
52
51
|
attr_accessor :ready_to_install
|
53
52
|
|
54
53
|
#####################################################
|
@@ -88,7 +87,7 @@ module Spaceship
|
|
88
87
|
'internalExpiry' => :internal_expiry_date,
|
89
88
|
'externalExpiry' => :external_expiry_date,
|
90
89
|
'watchKitEnabled' => :watch_kit_enabled,
|
91
|
-
'readyToInstall' => :ready_to_install
|
90
|
+
'readyToInstall' => :ready_to_install
|
92
91
|
)
|
93
92
|
|
94
93
|
class << self
|
@@ -129,9 +128,9 @@ module Spaceship
|
|
129
128
|
def submit_for_beta_review!(metadata)
|
130
129
|
# First, enable beta testing for this train (per iTC requirement)
|
131
130
|
self.build_train.update_testing_status!(true)
|
132
|
-
|
131
|
+
|
133
132
|
parameters = {
|
134
|
-
app_id: self.build_train.application.apple_id,
|
133
|
+
app_id: self.build_train.application.apple_id,
|
135
134
|
train: self.build_train.version_string,
|
136
135
|
build_number: self.build_version,
|
137
136
|
|
@@ -182,7 +181,7 @@ module Spaceship
|
|
182
181
|
|
183
182
|
# This will cancel the review process for this TestFlight build
|
184
183
|
def cancel_beta_review!
|
185
|
-
client.remove_testflight_build_from_review!(app_id: self.build_train.application.apple_id,
|
184
|
+
client.remove_testflight_build_from_review!(app_id: self.build_train.application.apple_id,
|
186
185
|
train: self.build_train.version_string,
|
187
186
|
build_number: self.build_version)
|
188
187
|
end
|
@@ -54,7 +54,7 @@ module Spaceship
|
|
54
54
|
# Setup all the builds and processing builds
|
55
55
|
def setup
|
56
56
|
super
|
57
|
-
|
57
|
+
|
58
58
|
@builds = self.raw_data['builds'].collect do |attrs|
|
59
59
|
attrs.merge!(build_train: self)
|
60
60
|
Tunes::Build.factory(attrs)
|
@@ -78,4 +78,4 @@ module Spaceship
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
81
|
-
end
|
81
|
+
end
|
@@ -28,23 +28,24 @@ module Spaceship
|
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
|
+
|
31
32
|
# Path to the gem to fetch resoures
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
33
|
+
def spaceship_gem_path
|
34
|
+
if Gem::Specification::find_all_by_name('spaceship').any?
|
35
|
+
return Gem::Specification.find_by_name('spaceship').gem_dir
|
36
|
+
else
|
37
|
+
return './'
|
38
38
|
end
|
39
|
+
end
|
39
40
|
|
40
41
|
# Get the mapping JSON parsed
|
41
|
-
|
42
|
-
|
43
|
-
|
42
|
+
def mapping
|
43
|
+
@languages ||= JSON.parse(File.read(File.join(spaceship_gem_path, "lib", "assets", "languageMapping.json")))
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
def readable_mapping
|
47
|
+
@readable ||= JSON.parse(File.read(File.join(spaceship_gem_path, "lib", "assets", "languageMappingReadable.json")))
|
48
|
+
end
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
@@ -58,4 +59,4 @@ class String
|
|
58
59
|
def to_full_language
|
59
60
|
Spaceship::Tunes::LanguageConverter.from_standard_to_itc(self)
|
60
61
|
end
|
61
|
-
end
|
62
|
+
end
|
@@ -8,19 +8,19 @@ module Spaceship
|
|
8
8
|
# Authenticates with Apple's web services. This method has to be called once
|
9
9
|
# to generate a valid session. The session will automatically be used from then
|
10
10
|
# on.
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# This method will automatically use the username from the Appfile (if available)
|
13
13
|
# and fetch the password from the Keychain (if available)
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# @param user (String) (optional): The username (usually the email address)
|
16
16
|
# @param password (String) (optional): The password
|
17
|
-
#
|
17
|
+
#
|
18
18
|
# @raise InvalidUserCredentialsError: raised if authentication failed
|
19
|
-
#
|
19
|
+
#
|
20
20
|
# @return (Spaceship::Client) The client the login method was called for
|
21
21
|
def login(user = nil, password = nil)
|
22
22
|
@client = TunesClient.login(user, password)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
-
end
|
26
|
+
end
|
@@ -3,22 +3,22 @@ module Spaceship
|
|
3
3
|
class Tester < TunesBase
|
4
4
|
|
5
5
|
# @return (String) The identifier of this tester, provided by iTunes Connect
|
6
|
-
# @example
|
6
|
+
# @example
|
7
7
|
# "60f858b4-60a8-428a-963a-f943a3d68d17"
|
8
8
|
attr_accessor :tester_id
|
9
9
|
|
10
10
|
# @return (String) The email of this tester
|
11
|
-
# @example
|
11
|
+
# @example
|
12
12
|
# "tester@spaceship.com"
|
13
13
|
attr_accessor :email
|
14
|
-
|
14
|
+
|
15
15
|
# @return (String) The first name of this tester
|
16
|
-
# @example
|
16
|
+
# @example
|
17
17
|
# "Cary"
|
18
18
|
attr_accessor :first_name
|
19
19
|
|
20
20
|
# @return (String) The last name of this tester
|
21
|
-
# @example
|
21
|
+
# @example
|
22
22
|
# "Bennett"
|
23
23
|
attr_accessor :last_name
|
24
24
|
|
@@ -32,7 +32,6 @@ module Spaceship
|
|
32
32
|
# }]
|
33
33
|
attr_accessor :devices
|
34
34
|
|
35
|
-
|
36
35
|
# Information about the most recent beta install
|
37
36
|
# @return [Integer] The ID of the most recently installed app
|
38
37
|
attr_accessor :latest_install_app_id
|
@@ -56,7 +55,7 @@ module Spaceship
|
|
56
55
|
'latestInstalledAppAdamId' => :latest_install_app_id,
|
57
56
|
'latestInstalledDate' => :latest_install_date,
|
58
57
|
'latestInstalledVersion' => :latest_installed_version_number,
|
59
|
-
'latestInstalledShortVersion' => :latest_installed_build_number
|
58
|
+
'latestInstalledShortVersion' => :latest_installed_build_number
|
60
59
|
)
|
61
60
|
|
62
61
|
class << self
|
@@ -90,10 +89,10 @@ module Spaceship
|
|
90
89
|
# @param email (String) (required): The email of the new tester
|
91
90
|
# @param first_name (String) (optional): The first name of the new tester
|
92
91
|
# @param last_name (String) (optional): The last name of the new tester
|
93
|
-
# @example
|
92
|
+
# @example
|
94
93
|
# Spaceship::Tunes::Tester.external.create!(email: "tester@mathiascarignani.com", first_name: "Cary", last_name:"Bennett")
|
95
94
|
# @return (Tester): The newly created tester
|
96
|
-
def create!(email: nil, first_name: nil, last_name: nil)
|
95
|
+
def create!(email: nil, first_name: nil, last_name: nil)
|
97
96
|
data = client.create_tester!(tester: self,
|
98
97
|
email: email,
|
99
98
|
first_name: first_name,
|
@@ -107,7 +106,7 @@ module Spaceship
|
|
107
106
|
|
108
107
|
# @return (Array) Returns all beta testers available for this account filtered by app
|
109
108
|
# @param app_id (String) (required): The app id to filter the testers
|
110
|
-
def all_by_app(app_id)
|
109
|
+
def all_by_app(app_id)
|
111
110
|
client.testers_by_app(self, app_id).map { |tester| self.factory(tester) }
|
112
111
|
end
|
113
112
|
|
@@ -128,7 +127,7 @@ module Spaceship
|
|
128
127
|
begin
|
129
128
|
tester.add_to_app!(app_id)
|
130
129
|
rescue => ex
|
131
|
-
if ex.to_s.include?"testerEmailExistsInternal" or ex.to_s.include?"duplicate.email"
|
130
|
+
if ex.to_s.include? "testerEmailExistsInternal" or ex.to_s.include? "duplicate.email"
|
132
131
|
# That's a non-relevant error message by iTC
|
133
132
|
# ignore that
|
134
133
|
else
|
@@ -146,7 +145,7 @@ module Spaceship
|
|
146
145
|
#####################################################
|
147
146
|
# @!group Subclasses
|
148
147
|
#####################################################
|
149
|
-
class External < Tester
|
148
|
+
class External < Tester
|
150
149
|
def self.url(app_id = nil)
|
151
150
|
{
|
152
151
|
index: "ra/users/pre/ext",
|
@@ -158,7 +157,7 @@ module Spaceship
|
|
158
157
|
end
|
159
158
|
end
|
160
159
|
|
161
|
-
class Internal < Tester
|
160
|
+
class Internal < Tester
|
162
161
|
def self.url(app_id = nil)
|
163
162
|
{
|
164
163
|
index: "ra/users/pre/int",
|
@@ -171,7 +170,7 @@ module Spaceship
|
|
171
170
|
end
|
172
171
|
|
173
172
|
# Delete current tester
|
174
|
-
def delete!
|
173
|
+
def delete!
|
175
174
|
client.delete_tester!(self)
|
176
175
|
end
|
177
176
|
|
@@ -192,4 +191,4 @@ module Spaceship
|
|
192
191
|
end
|
193
192
|
end
|
194
193
|
end
|
195
|
-
end
|
194
|
+
end
|