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)