38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require "json" | ||
|  | 
 | ||
|  | module Devops | ||
|  |   module API3 | ||
|  |     module Routes | ||
|  |       module KeyRoutes | ||
|  | 
 | ||
|  |         def self.registered(app) | ||
|  | 
 | ||
|  |           app.define_policy :read_keys, "Get keys list or key details" | ||
|  |           app.define_policy :create_keys, "Create keys" | ||
|  |           app.define_policy :delete_keys, "Delete keys" | ||
|  | 
 | ||
|  |           app.get_with_headers "/keys" do | ||
|  |             check_policy(:read_keys) | ||
|  |             json Devops::API3::Handler::Key.new(request).keys.map{|k| k.to_list_hash } | ||
|  |           end | ||
|  | 
 | ||
|  |           app.post_with_headers "/key" do | ||
|  |             check_policy(:create_keys) | ||
|  |             key = Devops::API3::Handler::Key.new(request).create(settings.keys_dir) | ||
|  |             create_response("Created", {id: key.id}, 201) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.delete_with_headers "/key/:key" do |key| | ||
|  |             check_policy(:delete_keys) | ||
|  |             Devops::API3::Handler::Key.new(request).delete key | ||
|  |             create_response("Key '#{key}' has been removed", {id: key}) | ||
|  |           end | ||
|  | 
 | ||
|  |           puts "Key routes initialized" | ||
|  |         end | ||
|  | 
 | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |