class Resources::ServiceDefinition

Constants

VALIDATE_PORT

Public Instance Methods

create() click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 78
def create
  tp_id = third_party_id
  params = { 
    service_definition: {
      service_id: service_id,
      hostname: prompter.ask("\nHost name: ") { |q| q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid host name" },
      port: get_port_number,
      base_uri: prompter.ask("\nBase URI: ") { |q| q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid base URI" },
      username: prompter.ask("\nUser name: ") { |q| q.validate = /\A.{0,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid user name" },
      service_class: prompter.ask("\nService Class: ") { |q| q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid service class" }
    }
  }
  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", params)
  puts "\nID of new service definition: #{result['id']}"
  puts
end
destroy() click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 131
def destroy
  tp_id = third_party_id
  sd_id = service_definition_id
  show
  if prompter.agree("\nAre you sure you want to destroy this service definition? (y/n) ", true)
    puts
    result = delete("services/third_parties/#{tp_id}/service_definitions/#{sd_id}")
    puts "\nID of deleted service_definition: #{result['id']}"
  else
    puts "\nCancelled deletion"
  end
  puts
end
get_port_number(prev_value=nil) click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 64
def get_port_number(prev_value=nil)
  clear_default = ->(field) { field == "^" ? nil : field }
  prompt = "\nPort"
  prompt << " (^ to clear)" unless prev_value.nil?
  prompt << ": "
  v = prompter.ask(prompt, clear_default) do |q| 
    q.default = prev_value.to_s unless prev_value.nil?
    q.validate = VALIDATE_PORT
    q.responses[:ask_on_error] = :question
    q.responses[:not_valid] = "\nNot a valid port number" 
  end 
  v == "0" ? nil : v
end
list() click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 14
def list
  tp_id = third_party_id
  result = get("services/third_parties/#{tp_id}/service_definitions")
  puts "\nService definitions for third party: #{tp_id}"
  table = Terminal::Table.new headings: [ 'Third Party', 'Service', 'Hostname', 'Port', 'Base URI', 'User Name', 'Service Class', 'Password', 'Token' ] do |t|
  result.each do | service_definition |
    t << [ "#{service_definition['third_party_name']} (#{service_definition['third_party_id']})",
           "#{service_definition['service_name']} (#{service_definition['service_id']})",
           service_definition['hostname'],
           service_definition['port'],
           service_definition['base_uri'], 
           service_definition['username'], 
           service_definition['service_class'],
           service_definition['password'],
           service_definition['token'] ]
    end
  end
  puts table
  puts
end
show() click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 35
def show
  tp_id = third_party_id
  sd_id = service_definition_id
  service_definition = get("services/third_parties/#{tp_id}/service_definitions/#{sd_id}")
  @sd_third_party_id = service_definition['third_party_id']
  @sd_service_id = service_definition['service_id']
  @sd_hostname = service_definition['hostname']
  @sd_port = service_definition['port']
  @sd_base_uri = service_definition['base_uri']
  @sd_username = service_definition['username']
  @sd_service_class = service_definition['service_class']
  @sd_password = service_definition['password']
  @sd_token = service_definition['token']
  puts "\nService Definition for third party: #{tp_id}/#{sd_id}"
  table = Terminal::Table.new headings: [ 'Third Party', 'Service', 'Hostname', 'Port', 'Base URI', 'User Name', 'Service Class', 'Password', 'Token' ] do |t|
    t << [ "#{service_definition['third_party_name']} (#{service_definition['third_party_id']})",
           "#{service_definition['service_name']} (#{service_definition['service_id']})",
           service_definition['hostname'],
           service_definition['port'],
           service_definition['base_uri'], 
           service_definition['username'], 
           service_definition['service_class'],
           service_definition['password'],
           service_definition['token'] ]
  end
  puts table
  puts
end
update() click to toggle source
# File lib/pvdgm-svc-client/resources/service_definition.rb, line 103
def update
  clear_default = ->(field) { field == "^" ? '' : field }
  tp_id = third_party_id
  sd_id = service_definition_id
  show
  params = { 
    service_definition: {
      service_id: service_id,
      hostname: prompter.ask("\nHost name: ")  { |q| q.default = @sd_hostname; q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid host name" },
      port: get_port_number(@sd_port),
      base_uri: prompter.ask("\nBase URI: ", String) { |q| q.default = @sd_base_uri.gsub("<%=", "<%%="); q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid base URI" }.gsub("<%%=", "<%="),
      username: prompter.ask("\nUser name (^ to clear): ", clear_default) { |q| q.default = @sd_username; q.validate = /\A.{0,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid user name" },
      service_class: prompter.ask("\nService Class: ")  { |q| q.default = @sd_service_class; q.validate = /\A.{1,255}\z/; q.responses[:ask_on_error] = :question; q.responses[:not_valid] = "\nNot a valid service class" }
    }
  }
  password = prompter.ask("\nPassword (^ to clear): ", clear_default) { |q| q.default = @sd_password }
  token = prompter.ask("\nToken (^ to clear): ", clear_default) { |q| q.default = @sd_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}", params)
  puts "\nID of updated service definition: #{result['id']}"
  puts
end