spaceship/lib/spaceship/connect_api/client.rb in fastlane-2.120.0.beta.20190409200021 vs spaceship/lib/spaceship/connect_api/client.rb in fastlane-2.120.0
- old
+ new
@@ -16,17 +16,18 @@
def self.hostname
'https://appstoreconnect.apple.com/iris/v1/'
end
- def build_params(filter: nil, includes: nil, limit: nil, sort: nil)
+ def build_params(filter: nil, includes: nil, limit: nil, sort: nil, cursor: nil)
params = {}
params[:filter] = filter if filter && !filter.empty?
params[:include] = includes if includes
params[:limit] = limit if limit
params[:sort] = sort if sort
+ params[:cursor] = cursor if cursor
return params
end
def get_beta_app_review_detail(filter: {}, includes: nil, limit: nil, sort: nil)
@@ -216,22 +217,34 @@
req.headers['Content-Type'] = 'application/json'
end
handle_response(response)
end
- def get_builds(filter: {}, includes: "buildBetaDetail,betaBuildMetrics", limit: 10, sort: "uploadedDate")
+ def get_build_deliveries(filter: {}, includes: nil, limit: 10, sort: nil)
# GET
- # https://appstoreconnect.apple.com/iris/v1/builds
+ # https://appstoreconnect.apple.com/iris/v1/buildDeliveries
params = build_params(filter: filter, includes: includes, limit: limit, sort: sort)
- response = request(:get, "builds") do |req|
+ response = request(:get, "buildDeliveries") do |req|
req.options.params_encoder = Faraday::NestedParamsEncoder
req.params = params
end
handle_response(response)
end
+ def get_builds(filter: {}, includes: "buildBetaDetail,betaBuildMetrics", limit: 10, sort: "uploadedDate", cursor: nil, only_data: true)
+ # GET
+ # https://appstoreconnect.apple.com/iris/v1/builds
+ params = build_params(filter: filter, includes: includes, limit: limit, sort: sort, cursor: cursor)
+
+ response = request(:get, "builds") do |req|
+ req.options.params_encoder = Faraday::NestedParamsEncoder
+ req.params = params
+ end
+ handle_response(response, only_data: only_data)
+ end
+
def patch_builds(build_id: nil, attributes: {})
# PATCH
# https://appstoreconnect.apple.com/iris/v1/builds/<build_id>
path = "builds/#{build_id}"
@@ -275,13 +288,58 @@
req.headers['Content-Type'] = 'application/json'
end
handle_response(response)
end
+ def get_pre_release_versions(filter: {}, includes: nil, limit: 40, sort: nil)
+ # GET
+ # https://appstoreconnect.apple.com/iris/v1/preReleaseVersions
+ params = build_params(filter: filter, includes: includes, limit: limit, sort: sort)
+
+ response = request(:get, "preReleaseVersions") do |req|
+ req.options.params_encoder = Faraday::NestedParamsEncoder
+ req.params = params
+ end
+ handle_response(response)
+ end
+
+ def get_beta_groups(filter: {}, includes: nil, limit: 40, sort: nil)
+ # GET
+ # https://appstoreconnect.apple.com/iris/v1/betaGroups
+ params = build_params(filter: filter, includes: includes, limit: limit, sort: sort)
+
+ response = request(:get, "betaGroups") do |req|
+ req.options.params_encoder = Faraday::NestedParamsEncoder
+ req.params = params
+ end
+ handle_response(response)
+ end
+
+ def add_beta_groups_to_build(build_id: nil, beta_group_ids: [])
+ # POST
+ # https://appstoreconnect.apple.com/iris/v1/builds/<build_id>/relationships/betaGroups
+
+ body = {
+ data: beta_group_ids.map do |id|
+ {
+ type: "betaGroups",
+ id: id
+ }
+ end
+ }
+
+ response = request(:post) do |req|
+ req.url("builds/#{build_id}/relationships/betaGroups")
+ req.body = body.to_json
+ req.headers['Content-Type'] = 'application/json'
+ end
+ handle_response(response)
+ end
+
protected
- def handle_response(response)
+ def handle_response(response, only_data: true)
if (200...300).cover?(response.status) && (response.body.nil? || response.body.empty?)
return
end
raise InternalServerError, "Server error got #{response.status}" if (500...600).cover?(response.status)
@@ -294,10 +352,10 @@
raise UnexpectedResponse, handle_errors(response) if response.body['errors']
raise UnexpectedResponse, "Temporary App Store Connect error: #{response.body}" if response.body['statusCode'] == 'ERROR'
- return response.body['data'] if response.body['data']
+ return response.body['data'] if response.body['data'] && only_data
return response.body
end
def handle_errors(response)