module Resources class Service < BaseResource include ServicePrompter def list result = get("services/services") puts "\nServices:" table = Terminal::Table.new headings: [ 'Name' ] do |t| result.each do | service | # puts format "(%4d) %s", service['id'], service['name'] t << [ service['name'] ] end end prompter.say table.to_s puts end def show sv_id = service_id result = get("services/services/#{sv_id}") puts "\nService:" table = Terminal::Table.new headings: [ 'Name' ] do |t| t << [ result['name'] ] end @service_name = result['name'] puts table puts end def create params = { service: { name: prompter.ask("\nName for new service: ") { |q| q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid service name" } } } result = post("services/services", params) puts "\nID of new service: #{result['id']}" puts end def update sv_id = service_id show params = { service: { name: prompter.ask("\nNew name for service: ") { |q| q.default = @service_name; q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid service name" } } } result = put("services/services/#{sv_id}", params) puts "\nID of updated service: #{result['id']}" puts end def invoke sv_id = service_id result = put("services/services/#{sv_id}/invoke", {}) if result.has_key?('message') puts result['message'] else puts result['error'] end end end end