module Resources class ConfiguredUser < BaseResource include ThirdPartyPrompter include ServiceDefinitionPrompter include ConfiguredUserPrompter def list tp_id = third_party_id sd_id = service_definition_id result = get("services/third_parties/#{tp_id}/service_definitions/#{sd_id}/configured_users") puts "\nConfigured users for third party: #{tp_id}, service definition: #{sd_id}" table = Terminal::Table.new headings: [ 'Service Def ID', 'User ID', 'User Name', 'Enabled', 'Password', 'Token' ] do |t| result.each do | configured_user | t << [ configured_user['service_definition_id'], "#{configured_user['user_name']} (#{configured_user['user_id']})", configured_user['username'], configured_user['enabled'], configured_user['password'], configured_user['token'] ] end end prompter.say table.to_s puts end def show tp_id = third_party_id sd_id = service_definition_id cu_id = configured_user_id configured_user = get("services/third_parties/#{tp_id}/service_definitions/#{sd_id}/configured_users/#{cu_id}") @cu_user_id = configured_user['user_id'] @cu_username = configured_user['username'] @cu_enabled = configured_user['enabled'] @cu_password = configured_user['password'] @cu_token = configured_user['token'] puts "\nConfigured user for third party: #{tp_id}/#{options[:id]}" table = Terminal::Table.new headings: [ 'Service Def Id', 'User ID', 'User Name', 'Enabled', 'Password', 'Token' ] do |t| t << [ configured_user['service_definition_id'], "#{configured_user['user_name']} (#{configured_user['user_id']})", configured_user['username'], configured_user['enabled'], configured_user['password'], configured_user['token'] ] end puts table puts end def create tp_id = third_party_id sd_id = service_definition_id params = { configured_user: { user_id: prompter.ask("\nUser ID: ", Integer) { |q| q.validate = lambda { |a| is_valid_object?('User', a) }; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid User ID" }, username: prompter.ask("\nUser name: ") { |q| q.validate = /\A.{0,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nInvalid user name" }, enabled: prompter.agree("\nEnabled? (y/n) ", true) } } puts password = prompter.ask("\nPassword: ") token = prompter.ask("\nToken: ") if (password && password.size > 0) || (token && token.size > 0) params[:credential] = { } params[:credential][:password] = password if password && password.size > 0 params[:credential][:token] = token if token && token.size > 0 end result = post("services/third_parties/#{tp_id}/service_definitions/#{sd_id}/configured_users", params) puts "\nID of new configured user: #{result['id']}" puts end def update clear_default = ->(field) { field == "^" ? '' : field } tp_id = third_party_id sd_id = service_definition_id cu_id = configured_user_id show params = { configured_user: { user_id: prompter.ask("\nUser ID: ", Integer) { |q| q.default = @cu_user_id; q.validate = lambda { |a| is_valid_object?('User', a) }; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid User ID" }, username: prompter.ask("\nUser name (^ to clear): ", clear_default) { |q| q.default = @cu_username; q.validate = /\A.{0,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nInvalid user name" }, enabled: prompter.agree("\nEnabled? ", true) { |q| q.default = @cu_enabled } } } puts password = prompter.ask("\nPassword (^ to clear): ", clear_default) { |q| q.default = @cu_password } token = prompter.ask("\nToken (^ to clear): ", clear_default) { |q| q.default = @cu_token } if (password && password.size > 0) || (token && token.size > 0) params[:credential] = { } params[:credential][:password] = password if password && password.size > 0 params[:credential][:token] = token if token && token.size > 0 end result = put("services/third_parties/#{tp_id}/service_definitions/#{sd_id}/configured_users/#{cu_id}", params) puts "\nID of updated configured user: #{result['id']}" puts end def destroy tp_id = third_party_id sd_id = service_definition_id cu_id = configured_user_id show if prompter.agree("\nAre you sure you want to destroy this configured user? (y/n) ", true) puts result = delete("services/third_parties/#{tp_id}/service_definitions/#{sd_id}/configured_users/#{cu_id}") puts "\nID of deleted configured user: #{result['id']}" else puts "\nCancelled deletion" end puts end end end