spaceship/lib/spaceship/tunes/tunes_client.rb in fastlane-2.12.0 vs spaceship/lib/spaceship/tunes/tunes_client.rb in fastlane-2.13.0

- old
+ new

@@ -373,9 +373,70 @@ handle_itc_response(r.body) end end ##################################################### + # @!group Members + ##################################################### + + def members + r = request(:get, "ra/users/itc") + parse_response(r, 'data')["users"] + end + + def reinvite_member(email) + request(:post, "ra/users/itc/#{email}/resendInvitation") + end + + def delete_member!(user_id, email) + payload = [] + payload << { + dsId: user_id, + email: email + } + request(:post) do |req| + req.url "ra/users/itc/delete" + req.body = payload.to_json + req.headers['Content-Type'] = 'application/json' + end + end + + def create_member!(firstname: nil, lastname: nil, email_address: nil, roles: [], apps: []) + r = request(:get, "ra/users/itc/create") + data = parse_response(r, 'data') + + data["user"]["firstName"] = { value: firstname } + data["user"]["lastName"] = { value: lastname } + data["user"]["emailAddress"] = { value: email_address } + + roles << "admin" if roles.length == 0 + + data["user"]["roles"] = [] + roles.each do |role| + # find role from template + data["roles"].each do |template_role| + if template_role["value"]["name"] == role + data["user"]["roles"] << template_role + end + end + end + + if apps.length == 0 + data["user"]["userSoftwares"] = { value: { grantAllSoftware: true, grantedSoftwareAdamIds: [] } } + else + 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.body = data.to_json + req.headers['Content-Type'] = 'application/json' + end + handle_itc_response(r.body) + end + + ##################################################### # @!group Pricing ##################################################### def update_price_tier!(app_id, price_tier) r = request(:get, "ra/apps/#{app_id}/pricing/intervals")