spaceship 0.14.2 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ca1965f032fb4b9519f298648f2c8a1b53cbe82
4
- data.tar.gz: 9d642ec4e1f1944ca9c4cc1af6a18862928dcdd1
3
+ metadata.gz: 193c64d9d18c91250a1b79c4ba14ebc1acc04447
4
+ data.tar.gz: 45621bf70cad9244851cb6cdb22e6f7ac86ba837
5
5
  SHA512:
6
- metadata.gz: 12bba9c53fef929676899c824b4a3308b25f6c100e4a894baf94c36b47166fa41cec88c436b76b2ffd287092c0bca26c1eec8979703c9ec92866acba6e6b14b1
7
- data.tar.gz: 22fc0d2e66424b2a79d86c76b6fb76a0e43d505c7a9f52a4cc7a725e97ead21d8e003d6e5ad7685349fb32419366d2898fa82944be34e3c05809563806251183
6
+ metadata.gz: 048dbc075a88165e383aefb420fcafb2f3fac027f80479d18fcfddab5bd1071502a36ed77602c6d1efe8fefd85dc2b64db2ebe8417290f58f0d466dfdf3d0d2f
7
+ data.tar.gz: 9b02bb4b3aa146aa2f9bd4a436067f40ac7663c801bcee6c1e898bc8fc3fa8b542ca5f4ca2cec3fe29451da48ad23d61d43429ee4600206c1752a883c927e971
@@ -292,7 +292,7 @@ module Spaceship
292
292
  if r.success? && a.include?("Apple Inc")
293
293
  return a
294
294
  else
295
- raise UnexpectedResponse.new, "Couldn't download provisioning profile, got this instead: #{a}"
295
+ raise UnexpectedResponse.new, "Couldn't download certificate, got this instead: #{a}"
296
296
  end
297
297
  end
298
298
 
@@ -21,6 +21,14 @@ module Spaceship
21
21
  def login(user = nil, password = nil)
22
22
  @client = TunesClient.login(user, password)
23
23
  end
24
+
25
+ # Open up the team selection for the user (if necessary).
26
+ #
27
+ # If the user is in multiple teams, a team selection is shown.
28
+ # The user can then select a team by entering the number
29
+ def select_team
30
+ @client.select_team
31
+ end
24
32
  end
25
33
  end
26
34
  end
@@ -38,11 +38,93 @@ module Spaceship
38
38
  "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/"
39
39
  end
40
40
 
41
+ # @return (Array) A list of all available teams
42
+ def teams
43
+ return @teams if @teams
44
+ r = request(:get, "ra/user/detail")
45
+ @teams = parse_response(r, 'data')['associatedAccounts']
46
+ end
47
+
48
+ # @return (String) The currently selected Team ID
49
+ def team_id
50
+ return @current_team_id if @current_team_id
51
+
52
+ if teams.count > 1
53
+ puts "The current user is in #{teams.count} teams. Pass a team ID or call `select_team` to choose a team. Using the first one for now."
54
+ end
55
+ @current_team_id ||= teams[0]['contentProvider']['contentProviderId']
56
+ end
57
+
58
+ # Set a new team ID which will be used from now on
59
+ def team_id=(t_id)
60
+ r = request(:post) do |req|
61
+ req.url "ra/v1/session/webSession"
62
+ req.body = { contentProviderId: t_id }.to_json
63
+ req.headers['Content-Type'] = 'application/json'
64
+ end
65
+
66
+ unless r.headers['Set-Cookie'].to_s.include?("itctx")
67
+ raise "Looks like your Apple ID is not enabled for iTunes Connect, make sure to be able to login online"
68
+ end
69
+
70
+ itctx_regex = /itctx=([^;]*)/
71
+ new_itctx = r.headers['Set-Cookie'].match(itctx_regex).to_s
72
+
73
+ @cookie = @cookie.gsub(itctx_regex, new_itctx)
74
+ handle_itc_response(r.body)
75
+
76
+ @current_team_id = t_id
77
+ end
78
+
79
+ # Shows a team selection for the user in the terminal. This should not be
80
+ # called on CI systems
81
+ def select_team
82
+ t_id = (ENV['FASTLANE_ITC_TEAM_ID'] || '').strip
83
+ t_name = (ENV['FASTLANE_ITC_TEAM_NAME'] || '').strip
84
+
85
+ if t_name.length > 0
86
+ teams.each do |t|
87
+ t_id = t['contentProvider']['contentProviderId'].to_s if t['contentProvider']['name'].downcase == t_name.downcase
88
+ end
89
+ end
90
+
91
+ t_id = teams.first['contentProvider']['contentProviderId'].to_s if teams.count == 1
92
+
93
+ if t_id.length > 0
94
+ # actually set the team id here
95
+ self.team_id = t_id
96
+ return
97
+ end
98
+
99
+ # user didn't specify a team... #thisiswhywecanthavenicethings
100
+ loop do
101
+ puts "Multiple teams found, please enter the number of the team you want to use: "
102
+ teams.each_with_index do |team, i|
103
+ puts "#{i + 1}) \"#{team['contentProvider']['name']}\" (#{team['contentProvider']['contentProviderId']})"
104
+ end
105
+
106
+ selected = ($stdin.gets || '').strip.to_i - 1
107
+ team_to_use = teams[selected] if selected >= 0
108
+
109
+ if team_to_use
110
+ self.team_id = team_to_use['contentProvider']['contentProviderId'].to_s # actually set the team id here
111
+ break
112
+ end
113
+ end
114
+ end
115
+
116
+ # @return (Hash) Fetches all information of the currently used team
117
+ def team_information
118
+ teams.find do |t|
119
+ t['teamId'] == team_id
120
+ end
121
+ end
122
+
41
123
  # returns wosinst, wosid and itctx
42
124
  def login_overhead_cookies(myacinfo)
43
125
  return @login_overhead_cookies if @login_overhead_cookies
44
126
 
45
- response = request(:get, "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/route?noext") # for woinst and wosid
127
+ response = request(:get, "route?noext") # for woinst and wosid
46
128
  cookies = {
47
129
  woinst: response['Set-Cookie'].match(/woinst=([^;]*)/)[1],
48
130
  wosid: response['Set-Cookie'].match(/wosid=([^;]*)/)[1],
@@ -1,3 +1,3 @@
1
1
  module Spaceship
2
- VERSION = "0.14.2"
2
+ VERSION = "0.15.0"
3
3
  end
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.14.2
4
+ version: 0.15.0
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: 2015-11-18 00:00:00.000000000 Z
12
+ date: 2015-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: credentials_manager