fluke/devops-service/routes/v2.0/key.rb
2014-12-22 14:22:04 +03:00

83 lines
2.1 KiB
Ruby

require "json"
require "db/exceptions/invalid_record"
require "db/mongo/models/key"
require "fileutils"
module Devops
module Version2_0
module Routes
module KeyRoutes
def self.registered(app)
app.after %r{\A/key(/[\w]+)?\z} do
statistic
end
app.before "/keys" do
check_headers :accept
check_privileges("key", "r")
end
app.before "/key" do
check_headers :accept, :content_type
check_privileges("key", "w")
end
app.before "/key/:key" do
check_headers :accept
check_privileges("key", "w")
end
# 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 "/keys", &Devops::Version2_0::Handler::Key.get_keys
# 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 "/key", &Devops::Version2_0::Handler::Key.create_key
# Delete ssh key from devops server
#
# * *Request*
# - method : DELETE
# - headers :
# - Accept: application/json
#
# * *Returns* :
# 200 - Deleted
app.delete "/key/:key", &Devops::Version2_0::Handler::Key.delete_key
puts "Key routes initialized"
end
end
end
end
end