Class: Spaceship::ConnectAPI::APIClient
- Inherits:
-
Spaceship::Client
- Object
- Spaceship::Client
- Spaceship::ConnectAPI::APIClient
- Defined in:
- spaceship/lib/spaceship/connect_api/api_client.rb
Direct Known Subclasses
Provisioning::Client, TestFlight::Client, Tunes::Client, Users::Client
Defined Under Namespace
Classes: TimeoutRetryError, TooManyRequestsError
Constant Summary
Constants inherited from Spaceship::Client
Spaceship::Client::AUTH_TYPES, Spaceship::Client::AccessForbiddenError, Spaceship::Client::AppleTimeoutError, Spaceship::Client::BadGatewayError, Spaceship::Client::BasicPreferredInfoError, Spaceship::Client::GatewayTimeoutError, Spaceship::Client::InsufficientPermissions, Spaceship::Client::InternalServerError, Spaceship::Client::InvalidUserCredentialsError, Spaceship::Client::NoUserCredentialsError, Spaceship::Client::PROTOCOL_VERSION, Spaceship::Client::ProgramLicenseAgreementUpdated, Spaceship::Client::TooManyRequestsError, Spaceship::Client::USER_AGENT, Spaceship::Client::UnauthorizedAccessError, Spaceship::Client::UnexpectedResponse
Instance Attribute Summary collapse
-
#token ⇒ Object
Returns the value of attribute token.
Attributes inherited from Spaceship::Client
#additional_headers, #client, #csrf_tokens, #logger, #provider, #user, #user_email
Client Init collapse
- .hostname ⇒ Object
- #build_params(filter: nil, includes: nil, fields: nil, limit: nil, sort: nil, cursor: nil) ⇒ Object
- #delete(url_or_path, params = nil, body = nil) ⇒ Object
- #get(url_or_path, params = nil) ⇒ Object
-
#hostname ⇒ Object
Instance level hostname only used when creating App Store Connect API Faraday client.
-
#initialize(cookie: nil, current_team_id: nil, token: nil, csrf_tokens: nil, another_client: nil) ⇒ APIClient
constructor
Instantiates a client with cookie session or a JWT token.
- #patch(url_or_path, body) ⇒ Object
- #post(url_or_path, body, tries: 5) ⇒ Object
-
#web_session? ⇒ Boolean
Helpers.
Methods inherited from Spaceship::Client
#UI, #ask_for_2fa_code, #choose_phone_number, client_with_authorization_from, #cookie, #detect_most_common_errors_and_raise_exceptions, #do_sirp, #exit_with_session_state, #fastlane_user_dir, #fetch_hashcash, #fetch_olympus_session, #fetch_program_license_agreement_messages, #handle_two_factor, #handle_two_step, #handle_two_step_for_device, #handle_two_step_or_factor, #has_valid_session, #itc_service_key, #load_session_from_env, #load_session_from_file, #login, login, #match_phone_to_masked_phone, #page_size, #paging, #parse_response, #pbkdf2, #perform_login_method, #persistent_cookie_path, #phone_id_from_masked_number, #phone_id_from_number, #push_mode_from_masked_number, #push_mode_from_number, #raise_insufficient_permission_error!, #request, #request_two_factor_code_from_phone, #request_two_factor_code_from_phone_choose, #send_shared_login_request, #sms_automatically_sent, #sms_fallback, spaceship_session_env, #store_cookie, #store_session, #team_id, #team_id=, #team_information, #team_name, #teams, #to_byte, #to_hex, #try_upgrade_2fa_later, #update_request_headers, #user_details_data, #with_retry
Constructor Details
#initialize(cookie: nil, current_team_id: nil, token: nil, csrf_tokens: nil, another_client: nil) ⇒ APIClient
Instantiates a client with cookie session or a JWT token.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 20 def initialize(cookie: nil, current_team_id: nil, token: nil, csrf_tokens: nil, another_client: nil) params_count = [, token, another_client].compact.size if params_count != 1 raise "Must initialize with one of :cookie, :token, or :another_client" end if token.nil? if another_client.nil? super(cookie: , current_team_id: current_team_id, csrf_tokens: csrf_tokens, timeout: 1200) return end super(cookie: another_client.instance_variable_get(:@cookie), current_team_id: another_client.team_id, csrf_tokens: another_client.csrf_tokens) else = { request: { timeout: (ENV["SPACESHIP_TIMEOUT"] || 300).to_i, open_timeout: (ENV["SPACESHIP_TIMEOUT"] || 300).to_i } } @token = token @current_team_id = current_team_id @client = Faraday.new(hostname, ) do |c| c.response(:json, content_type: /\bjson$/) c.response(:plist, content_type: /\bplist$/) c.use(FaradayMiddleware::RelsMiddleware) c.use(Spaceship::StatsMiddleware) c.use(Spaceship::TokenRefreshMiddleware, token) c.adapter(Faraday.default_adapter) if ENV['SPACESHIP_DEBUG'] # for debugging only # This enables tracking of networking requests using Charles Web Proxy c.proxy = "https://127.0.0.1:8888" c.ssl[:verify_mode] = OpenSSL::SSL::VERIFY_NONE elsif ENV["SPACESHIP_PROXY"] c.proxy = ENV["SPACESHIP_PROXY"] c.ssl[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if ENV["SPACESHIP_PROXY_SSL_VERIFY_NONE"] end if ENV["DEBUG"] puts("To run spaceship through a local proxy, use SPACESHIP_DEBUG") end end end end |
Instance Attribute Details
#token ⇒ Object
Returns the value of attribute token.
13 14 15 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 13 def token @token end |
Class Method Details
.hostname ⇒ Object
77 78 79 80 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 77 def self.hostname # Implemented in subclass not_implemented(__method__) end |
Instance Method Details
#build_params(filter: nil, includes: nil, fields: nil, limit: nil, sort: nil, cursor: nil) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 90 def build_params(filter: nil, includes: nil, fields: nil, limit: nil, sort: nil, cursor: nil) params = {} filter = filter.delete_if { |k, v| v.nil? } if filter params[:filter] = filter if filter && !filter.empty? params[:include] = includes if includes params[:fields] = fields if fields params[:limit] = limit if limit params[:sort] = sort if sort params[:cursor] = cursor if cursor return params end |
#delete(url_or_path, params = nil, body = nil) ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 139 def delete(url_or_path, params = nil, body = nil) response = with_asc_retry do request(:delete) do |req| req.url(url_or_path) req..params_encoder = Faraday::NestedParamsEncoder if params req.params = params if params req.body = body.to_json if body req.headers['Content-Type'] = 'application/json' if body end end handle_response(response) end |
#get(url_or_path, params = nil) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 105 def get(url_or_path, params = nil) response = with_asc_retry do request(:get) do |req| req.url(url_or_path) req..params_encoder = Faraday::NestedParamsEncoder req.params = params if params req.headers['Content-Type'] = 'application/json' end end handle_response(response) end |
#hostname ⇒ Object
Instance level hostname only used when creating App Store Connect API Faraday client. Forwarding to class level if using web session.
70 71 72 73 74 75 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 70 def hostname if @token return @token.in_house ? "https://api.enterprise.developer.apple.com/" : "https://api.appstoreconnect.apple.com/" end return self.class.hostname end |
#patch(url_or_path, body) ⇒ Object
128 129 130 131 132 133 134 135 136 137 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 128 def patch(url_or_path, body) response = with_asc_retry do request(:patch) do |req| req.url(url_or_path) req.body = body.to_json req.headers['Content-Type'] = 'application/json' end end handle_response(response) end |
#post(url_or_path, body, tries: 5) ⇒ Object
117 118 119 120 121 122 123 124 125 126 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 117 def post(url_or_path, body, tries: 5) response = with_asc_retry(tries) do request(:post) do |req| req.url(url_or_path) req.body = body.to_json req.headers['Content-Type'] = 'application/json' end end handle_response(response) end |
#web_session? ⇒ Boolean
Helpers
86 87 88 |
# File 'spaceship/lib/spaceship/connect_api/api_client.rb', line 86 def web_session? return @token.nil? end |