spaceship/lib/spaceship/tunes/tunes_client.rb in fastlane-2.74.1 vs spaceship/lib/spaceship/tunes/tunes_client.rb in fastlane-2.75.0.beta.20180109010003

- old
+ new

@@ -59,49 +59,49 @@ def select_team t_id = (ENV['FASTLANE_ITC_TEAM_ID'] || '').strip t_name = (ENV['FASTLANE_ITC_TEAM_NAME'] || '').strip if t_name.length > 0 && t_id.length.zero? # we prefer IDs over names, they are unique - puts "Looking for iTunes Connect Team with name #{t_name}" if Spaceship::Globals.verbose? + puts("Looking for iTunes Connect Team with name #{t_name}") if Spaceship::Globals.verbose? teams.each do |t| t_id = t['contentProvider']['contentProviderId'].to_s if t['contentProvider']['name'].casecmp(t_name.downcase).zero? end - puts "Could not find team with name '#{t_name}', trying to fallback to default team" if t_id.length.zero? + puts("Could not find team with name '#{t_name}', trying to fallback to default team") if t_id.length.zero? end t_id = teams.first['contentProvider']['contentProviderId'].to_s if teams.count == 1 if t_id.length > 0 - puts "Looking for iTunes Connect Team with ID #{t_id}" if Spaceship::Globals.verbose? + puts("Looking for iTunes Connect Team with ID #{t_id}") if Spaceship::Globals.verbose? # actually set the team id here self.team_id = t_id return end # user didn't specify a team... #thisiswhywecanthavenicethings loop do - puts "Multiple iTunes Connect teams found, please enter the number of the team you want to use: " - puts "Note: to automatically choose the team, provide either the iTunes Connect Team ID, or the Team Name in your fastlane/Appfile:" - puts "Alternatively you can pass the team name or team ID using the `FASTLANE_ITC_TEAM_ID` or `FASTLANE_ITC_TEAM_NAME` environment variable" + puts("Multiple iTunes Connect teams found, please enter the number of the team you want to use: ") + puts("Note: to automatically choose the team, provide either the iTunes Connect Team ID, or the Team Name in your fastlane/Appfile:") + puts("Alternatively you can pass the team name or team ID using the `FASTLANE_ITC_TEAM_ID` or `FASTLANE_ITC_TEAM_NAME` environment variable") first_team = teams.first["contentProvider"] - puts "" - puts " itc_team_id \"#{first_team['contentProviderId']}\"" - puts "" - puts "or" - puts "" - puts " itc_team_name \"#{first_team['name']}\"" - puts "" + puts("") + puts(" itc_team_id \"#{first_team['contentProviderId']}\"") + puts("") + puts("or") + puts("") + puts(" itc_team_name \"#{first_team['name']}\"") + puts("") teams.each_with_index do |team, i| - puts "#{i + 1}) \"#{team['contentProvider']['name']}\" (#{team['contentProvider']['contentProviderId']})" + puts("#{i + 1}) \"#{team['contentProvider']['name']}\" (#{team['contentProvider']['contentProviderId']})") end unless Spaceship::Client::UserInterface.interactive? - puts "Multiple teams found on iTunes Connect, Your Terminal is running in non-interactive mode! Cannot continue from here." - puts "Please check that you set FASTLANE_ITC_TEAM_ID or FASTLANE_ITC_TEAM_NAME to the right value." + puts("Multiple teams found on iTunes Connect, Your Terminal is running in non-interactive mode! Cannot continue from here.") + puts("Please check that you set FASTLANE_ITC_TEAM_ID or FASTLANE_ITC_TEAM_NAME to the right value.") raise "Multiple iTunes Connect Teams found; unable to choose, terminal not ineractive!" end selected = ($stdin.gets || '').strip.to_i - 1 team_to_use = teams[selected] if selected >= 0 @@ -149,11 +149,11 @@ # rubocop:disable Metrics/PerceivedComplexity # If the response is coming from a flaky api, set flaky_api_call to true so we retry a little. # Patience is a virtue. def handle_itc_response(raw, flaky_api_call: false) return unless raw - return unless raw.kind_of? Hash + return unless raw.kind_of?(Hash) data = raw['data'] || raw # sometimes it's with data, sometimes it isn't error_keys_to_check = [ "sectionErrorKeys", "sectionInfoKeys", @@ -182,11 +182,11 @@ # Prepend the error with the language so it's easier to understand for the user errors += value.collect do |current_error_message| current_language ? "[#{current_language}]: #{current_error_message}" : current_error_message end end - elsif hash.kind_of? Array + elsif hash.kind_of?(Array) hash.each do |value| errors += handle_response_hash.call(value) end # else: We don't care about simple values end @@ -255,11 +255,11 @@ parse_response(r, 'data') end def update_app_details!(app_id, data) r = request(:post) do |req| - req.url "ra/apps/#{app_id}/details" + req.url("ra/apps/#{app_id}/details") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) @@ -274,11 +274,11 @@ # (String): The version number is shown on the App Store and should match the one you used in Xcode. # @param sku (String): A unique ID for your app that is not visible on the App Store. # @param bundle_id (String): The bundle ID must match the one you used in Xcode. It # can't be changed after you submit your first build. def create_application!(name: nil, primary_language: nil, version: nil, sku: nil, bundle_id: nil, bundle_id_suffix: nil, company_name: nil, platform: nil, itunes_connect_users: nil) - puts "The `version` parameter is deprecated. Use `Spaceship::Tunes::Application.ensure_version!` method instead" if version + puts("The `version` parameter is deprecated. Use `Spaceship::Tunes::Application.ensure_version!` method instead") if version # First, we need to fetch the data from Apple, which we then modify with the user's values primary_language ||= "English" platform ||= "ios" r = request(:get, "ra/apps/create/v2/?platformString=#{platform}") @@ -298,27 +298,27 @@ data['initialPlatform'] = platform data['enabledPlatformsForCreation'] = { value: [platform] } unless itunes_connect_users.nil? data['iTunesConnectUsers']['grantedAllUsers'] = false - data['iTunesConnectUsers']['grantedUsers'] = data['iTunesConnectUsers']['availableUsers'].select { |user| itunes_connect_users.include? user['username'] } + data['iTunesConnectUsers']['grantedUsers'] = data['iTunesConnectUsers']['availableUsers'].select { |user| itunes_connect_users.include?(user['username']) } end # Now send back the modified hash r = request(:post) do |req| - req.url 'ra/apps/create/v2' + req.url('ra/apps/create/v2') req.body = data.to_json req.headers['Content-Type'] = 'application/json' end data = parse_response(r, 'data') handle_itc_response(data) end def create_version!(app_id, version_number, platform = 'ios') r = request(:post) do |req| - req.url "ra/apps/#{app_id}/platforms/#{platform}/versions/create/" + req.url("ra/apps/#{app_id}/platforms/#{platform}/versions/create/") req.body = { version: { value: version_number.to_s } }.to_json @@ -402,11 +402,11 @@ raise "app_id is required" unless app_id raise "version_id is required" unless version_id.to_i > 0 with_tunes_retry do r = request(:post) do |req| - req.url "ra/apps/#{app_id}/platforms/ios/versions/#{version_id}" + req.url("ra/apps/#{app_id}/platforms/ios/versions/#{version_id}") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body, flaky_api_call: true) @@ -431,11 +431,11 @@ payload << { dsId: user_id, email: email } request(:post) do |req| - req.url "ra/users/itc/delete" + req.url("ra/users/itc/delete") req.body = payload.to_json req.headers['Content-Type'] = 'application/json' end end @@ -465,11 +465,11 @@ data["user"]["userSoftwares"] = { value: { grantAllSoftware: false, grantedSoftwareAdamIds: apps } } end # send the changes back to Apple r = request(:post) do |req| - req.url "ra/users/itc/create" + req.url("ra/users/itc/create") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -496,11 +496,11 @@ data["user"]["userSoftwares"] = { value: { grantAllSoftware: false, grantedSoftwareAdamIds: apps } } end # send the changes back to Apple r = request(:post) do |req| - req.url "ra/users/itc/#{member.user_id}/roles" + req.url("ra/users/itc/#{member.user_id}/roles") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -531,11 +531,11 @@ end end # send the changes back to Apple r = request(:post) do |req| - req.url "ra/apps/#{app_id}/pricing/intervals" + req.url("ra/apps/#{app_id}/pricing/intervals") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -598,11 +598,11 @@ data["countries"] = availability.territories.map { |territory| { 'code' => territory.code } } data["theWorld"] = availability.include_future_territories.nil? ? true : availability.include_future_territories # send the changes back to Apple r = request(:post) do |req| - req.url "ra/apps/#{app_id}/pricing/intervals" + req.url("ra/apps/#{app_id}/pricing/intervals") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) data = parse_response(r, 'data') @@ -800,11 +800,11 @@ if retry_error_messages.any? { |message| ex.to_s.include?(message) } tries -= 1 if tries > 0 logger.warn("Received temporary server error from iTunes Connect. Retrying the request...") - sleep 3 unless Object.const_defined?("SpecHelper") + sleep(3) unless Object.const_defined?("SpecHelper") retry end end raise Spaceship::Client::UnexpectedResponse, "Temporary iTunes Connect error: #{ex}" @@ -816,21 +816,21 @@ # The request fails if this key is present in the data data.delete("dailySubmissionCountByPlatform") r = request(:post) do |req| - req.url "ra/apps/#{app_id}/testingTypes/#{testing_type}/trains/" + req.url("ra/apps/#{app_id}/testingTypes/#{testing_type}/trains/") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end def remove_testflight_build_from_review!(app_id: nil, train: nil, build_number: nil, platform: 'ios') r = request(:post) do |req| - req.url "ra/apps/#{app_id}/platforms/#{platform}/trains/#{train}/builds/#{build_number}/reject" + req.url("ra/apps/#{app_id}/platforms/#{platform}/trains/#{train}/builds/#{build_number}/reject") req.body = {}.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -875,11 +875,11 @@ review_password = build_info['reviewPassword']['value'] build_info['reviewAccountRequired']['value'] = (review_user_name.to_s + review_password.to_s).length > 0 # Now send everything back to iTC r = request(:post) do |req| # same URL, but a POST request - req.url url + req.url(url) req.body = build_info.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -944,11 +944,11 @@ } } } r = request(:post) do |req| # same URL, but a POST request - req.url "ra/apps/#{app_id}/platforms/#{platform}/trains/#{train}/builds/#{build_number}/review/submit" + req.url("ra/apps/#{app_id}/platforms/#{platform}/trains/#{train}/builds/#{build_number}/review/submit") req.body = review_info.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) @@ -956,11 +956,11 @@ # rubocop:enable Metrics/ParameterLists def get_build_info_for_review(app_id: nil, train: nil, build_number: nil, platform: 'ios') url = "ra/apps/#{app_id}/platforms/#{platform}/trains/#{train}/builds/#{build_number}/testInformation" r = request(:get) do |req| - req.url url + req.url(url) req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) r.body['data'] @@ -973,11 +973,11 @@ def prepare_app_submissions(app_id, version) raise "app_id is required" unless app_id raise "version is required" unless version r = request(:get) do |req| - req.url "ra/apps/#{app_id}/versions/#{version}/submit/summary" + req.url("ra/apps/#{app_id}/versions/#{version}/submit/summary") req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) parse_response(r, 'data') @@ -986,11 +986,11 @@ def send_app_submission(app_id, version, data) raise "app_id is required" unless app_id # ra/apps/1039164429/version/submit/complete r = request(:post) do |req| - req.url "ra/apps/#{app_id}/versions/#{version}/submit/complete" + req.url("ra/apps/#{app_id}/versions/#{version}/submit/complete") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) @@ -1017,11 +1017,11 @@ def release!(app_id, version) raise "app_id is required" unless app_id raise "version is required" unless version r = request(:post) do |req| - req.url "ra/apps/#{app_id}/versions/#{version}/releaseToStore" + req.url("ra/apps/#{app_id}/versions/#{version}/releaseToStore") req.headers['Content-Type'] = 'application/json' req.body = app_id.to_s end handle_itc_response(r.body) @@ -1077,11 +1077,11 @@ # updates an In-App-Purchases-Family def update_iap_family!(app_id: nil, family_id: nil, data: nil) with_tunes_retry do r = request(:put) do |req| - req.url "ra/apps/#{app_id}/iaps/family/#{family_id}/" + req.url("ra/apps/#{app_id}/iaps/family/#{family_id}/") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -1089,11 +1089,11 @@ # updates an In-App-Purchases def update_iap!(app_id: nil, purchase_id: nil, data: nil) with_tunes_retry do r = request(:put) do |req| - req.url "ra/apps/#{app_id}/iaps/#{purchase_id}" + req.url("ra/apps/#{app_id}/iaps/#{purchase_id}") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -1107,11 +1107,11 @@ data['activeAddOns'][0]['referenceName'] = { value: reference_name } data['name'] = { value: name } data["details"]["value"] = versions r = request(:post) do |req| - req.url "ra/apps/#{app_id}/iaps/family/" + req.url("ra/apps/#{app_id}/iaps/family/") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -1167,18 +1167,18 @@ data["versions"][0]["details"]["value"] = versions_array data['versions'][0]["reviewNotes"] = { value: review_notes } if review_screenshot # Upload Screenshot: - upload_file = UploadFile.from_path review_screenshot + upload_file = UploadFile.from_path(review_screenshot) screenshot_data = upload_purchase_review_screenshot(app_id, upload_file) data["versions"][0]["reviewScreenshot"] = screenshot_data end # Now send back the modified hash r = request(:post) do |req| - req.url "ra/apps/#{app_id}/iaps" + req.url("ra/apps/#{app_id}/iaps") req.body = data.to_json req.headers['Content-Type'] = 'application/json' end handle_itc_response(r.body) end @@ -1193,11 +1193,11 @@ end def create_sandbox_tester!(tester_class: nil, email: nil, password: nil, first_name: nil, last_name: nil, country: nil) url = tester_class.url[:create] r = request(:post) do |req| - req.url url + req.url(url) req.body = { user: { emailAddress: { value: email }, password: { value: password }, confirmPassword: { value: password }, @@ -1220,11 +1220,11 @@ end def delete_sandbox_testers!(tester_class, emails) url = tester_class.url[:delete] request(:post) do |req| - req.url url + req.url(url) req.body = emails.map do |email| { emailAddress: { value: email } @@ -1262,11 +1262,11 @@ agreedToContract: true, versionId: version_id }] url = "ra/apps/#{app_id}/promocodes/versions" r = request(:post) do |req| - req.url url + req.url(url) req.body = data.to_json req.headers['Content-Type'] = 'application/json' end parse_response(r, 'data') end @@ -1283,11 +1283,11 @@ def reject!(app_id, version) raise "app_id is required" unless app_id raise "version is required" unless version r = request(:post) do |req| - req.url "ra/apps/#{app_id}/versions/#{version}/reject" + req.url("ra/apps/#{app_id}/versions/#{version}/reject") req.headers['Content-Type'] = 'application/json' req.body = app_id.to_s end handle_itc_response(r.body) @@ -1299,22 +1299,22 @@ def with_tunes_retry(tries = 5, potential_server_error_tries = 3, &_block) return yield rescue Spaceship::TunesClient::ITunesConnectTemporaryError => ex unless (tries -= 1).zero? msg = "iTunes Connect temporary error received: '#{ex.message}'. Retrying after 60 seconds (remaining: #{tries})..." - puts msg - logger.warn msg - sleep 60 unless Object.const_defined?("SpecHelper") + puts(msg) + logger.warn(msg) + sleep(60) unless Object.const_defined?("SpecHelper") retry end raise ex # re-raise the exception rescue Spaceship::TunesClient::ITunesConnectPotentialServerError => ex unless (potential_server_error_tries -= 1).zero? msg = "Potential server error received: '#{ex.message}'. Retrying after 10 seconds (remaining: #{tries})..." - puts msg - logger.warn msg - sleep 10 unless Object.const_defined?("SpecHelper") + puts(msg) + logger.warn(msg) + sleep(10) unless Object.const_defined?("SpecHelper") retry end raise ex end @@ -1359,10 +1359,10 @@ } ] } r = request(:post) do |req| - req.url url + req.url(url) req.body = data.to_json req.headers['Content-Type'] = 'application/json' end data = parse_response(r, 'data')