require "json" module Devops module API2_0 module Routes module KeyRoutes def self.registered(app) # Get list of available ssh keys # # * *Request* # - method : GET # - headers : # - Accept: application/json # # * *Returns* : array of strings # [ # { # "scope": "system", -> 'system' - key was added by server, 'user' - key was added by user # "id": "devops" # } # ] app.get_with_headers "/keys", :headers => [:accept] do check_privileges("key", "r") json Devops::API2_0::Handler::Key.new(request).keys.map(&:to_hash) end # Create ssh key on devops server # # * *Request* # - method : POST # - headers : # - Accept: application/json # - Content-Type: application/json # - body : # { # "file_name": "key file name", # "key_name": "key name", # "content": "key content" # } # # * *Returns* : # 201 - Created app.post_with_headers "/key", :headers => [:accept, :content_type] do check_privileges("key", "w") Devops::API2_0::Handler::Key.new(request).create(settings.keys_dir) create_response("Created", nil, 201) end # Delete ssh key from devops server # # * *Request* # - method : DELETE # - headers : # - Accept: application/json # # * *Returns* : # 200 - Deleted app.delete_with_headers "/key/:key", :headers => [:accept] do |key| check_privileges("key", "w") r = Devops::API2_0::Handler::Key.new(request).delete key return [500, r["err"].inspect] if r["err"] create_response("Key '#{key}' removed") end puts "Key routes initialized" end end end end end