class Conjur::Policy::HTTPExecutor
Attributes
api[R]
context[R]
Public Class Methods
new(api)
click to toggle source
@param [Conjur::API] api
# File lib/conjur/policy/executor.rb, line 49 def initialize api @api = api @context = {} end
Public Instance Methods
execute(actions)
click to toggle source
# File lib/conjur/policy/executor.rb, line 54 def execute actions require 'net/https' uri = URI.parse(Conjur.configuration.appliance_url) use_ssl = uri.scheme == 'https' @base_path = uri.path Net::HTTP.start uri.host, uri.port, use_ssl: use_ssl do |http| @http = http actions.each do |step| invoke step end end @context end
Protected Instance Methods
create(path, parameters)
click to toggle source
# File lib/conjur/policy/executor.rb, line 75 def create path, parameters request = Net::HTTP::Post.new [ @base_path, path ].join('/') set_request_body request, parameters send_request request end
Also aliased as: post
delete(path, parameters)
click to toggle source
# File lib/conjur/policy/executor.rb, line 91 def delete path, parameters uri = URI.parse([ @base_path, path ].join('/')) unless parameters.blank? uri.query = [uri.query, parameters.to_query(nil)].compact.join('&') end request = Net::HTTP::Delete.new [ uri.path, '?', uri.query ].join send_request request end
invoke(step)
click to toggle source
# File lib/conjur/policy/executor.rb, line 71 def invoke step send step['method'], step['path'], step['parameters'] end
send_request(request)
click to toggle source
# File lib/conjur/policy/executor.rb, line 101 def send_request request # $stderr.puts "#{request.method.upcase} #{request.path} #{request.body}" require 'base64' request['Authorization'] = "Token token=\"#{Base64.strict_encode64 @api.token.to_json}\"" request['X-Conjur-Privilege'] = api.privilege if api.privilege response = @http.request request # $stderr.puts response.code if response.code.to_i >= 300 $stderr.puts "#{request.method.upcase} #{request.path} #{request.body} failed with error #{response.code}:" # $stderr.puts "Request failed with error #{response.code}:" $stderr.puts response.body else update_context_from_response response end end
set_request_body(request, params)
click to toggle source
# File lib/conjur/policy/executor.rb, line 127 def set_request_body request, params if params.is_a?(String) request.body = params else request.set_form_data to_params(params) end end
to_params(params)
click to toggle source
Convert parameter keys to rails []-style keys
# File lib/conjur/policy/executor.rb, line 136 def to_params params Array(params).inject({}) do |memo,entry| key, value = entry if value.is_a?(Array) key = "#{key}[]" end memo[key] = value memo end end
update(path, parameters)
click to toggle source
# File lib/conjur/policy/executor.rb, line 83 def update path, parameters request = Net::HTTP::Put.new [ @base_path, path ].join('/') set_request_body request, parameters send_request request end
Also aliased as: put
update_context_from_response(response)
click to toggle source
# File lib/conjur/policy/executor.rb, line 117 def update_context_from_response response return if response.body.nil? or response.body.empty? response_json = JSON.parse response.body unless response_json['api_key'].nil? @context[response_json['roleid']] = response_json['api_key'] end rescue JSON::ParserError # empty end