class Resources::PublicKey

Public Instance Methods

create() click to toggle source
# File lib/pvdgm-svc-client/resources/public_key.rb, line 39
def create
  params = {
    public_key: {
      name: prompter.ask("\nName for new public key: "),

      key_file: prompter.ask("\nFile containing public key (PEM format): ", ->(field) { File.new(field) }) do |q|
        q.glob = "*.pem"
        q.validate = ->(file_name) { File.exists?(file_name) }
        q.responses[:ask_on_error] = :question
        q.responses[:not_valid] = "\nFile does not exist"
      end,

      valid_until: prompter.ask("\nDate at which key becomes invalid: ") do |q|
        q.validate = ->(valid_until) {
          return true if valid_until.nil? || valid_until.length == 0
          begin
            Date.parse(valid_until)
            true
          rescue ArgumentError
            false
          end
        }
        q.responses[:ask_on_error] = :question
        q.responses[:not_valid] = "\nInvalid date"
      end
    }
  }
  result = post("services/public_keys", params)
  puts "\nID of new Public Key: #{result['id']}"
  puts
end
destroy() click to toggle source
# File lib/pvdgm-svc-client/resources/public_key.rb, line 104
def destroy
  pk_id = public_key_id
  show 
  if prompter.agree("\nAre you sure you want to destroy this public key? (y/n) ", true)
    puts
    result = delete("services/public_keys/#{pk_id}")
    puts "\nID of deleted public key: #{result['id']}"
  else
    puts "\nCancelled deletion"
  end
  puts
end
list() click to toggle source
# File lib/pvdgm-svc-client/resources/public_key.rb, line 6
def list
  result = get("services/public_keys")
  puts "\nPublic Keys:"
  table = Terminal::Table.new headings: [ 'Name', 'Valid Until', 'Created At', 'Updated At' ] do |t|
    result.each do | pk |
      t << [ pk['name'],
             pk['valid_until'],
             pk['created_at'],
             pk['updated_at']
           ]
    end
  end

  prompter.say table.to_s
  puts
end
show() click to toggle source
# File lib/pvdgm-svc-client/resources/public_key.rb, line 23
def show
  pk_id = public_key_id
  pk = get("services/public_keys/#{pk_id}")
  puts "\nPublic Key:"
  table = Terminal::Table.new headings: [ 'Name', 'Valid Until', 'Created At', 'Updated At' ] do |t|
    t << [ pk['name'],
           pk['valid_until'],
           pk['created_at'],
           pk['updated_at']
         ]
  end

  puts table
  puts
end
update() click to toggle source
# File lib/pvdgm-svc-client/resources/public_key.rb, line 71
def update
  pk_id = public_key_id
  show 
  params = {
    public_key: {
      name: prompter.ask("\nName for new public key: "),

      key_file: prompter.ask("\nFile containing public key (PEM format): ", ->(field) { File.new(field) }) do |q|
        q.validate = ->(file_name) { File.exists?(file_name) }
        q.responses[:ask_on_error] = :question
        q.responses[:not_valid] = "\nFile does not exist"
      end,

      valid_until: prompter.ask("\nDate at which key becomes invalid: ") do |q|
        q.validate = ->(valid_until) {
          return true if valid_until.nil? || valid_until.length == 0
          begin
            Date.parse(valid_until)
            true
          rescue ArgumentError
            false
          end
        }
        q.responses[:ask_on_error] = :question
        q.responses[:not_valid] = "\nInvalid date"
      end
    }
  }
  result = put("services/public_keys/#{pk_id}", params)
  puts "\nID of updated Public Key: #{result['id']}"
  puts
end