class Conjur::DSL2::HTTPExecutor
Attributes
api[R]
context[R]
Public Class Methods
new(api)
click to toggle source
@param [Conjur::API] api
# File lib/conjur/dsl2/executor.rb, line 42 def initialize api @api = api @context = {} end
Public Instance Methods
execute(actions)
click to toggle source
# File lib/conjur/dsl2/executor.rb, line 47 def execute actions require 'net/https' uri = URI.parse(Conjur.configuration.appliance_url) @base_path = uri.path Net::HTTP.start uri.host, uri.port, use_ssl: true 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/dsl2/executor.rb, line 67 def create path, parameters request = Net::HTTP::Post.new [ @base_path, path ].join('/') request.set_form_data to_params(parameters) send_request request end
Also aliased as: post
delete(path, parameters)
click to toggle source
# File lib/conjur/dsl2/executor.rb, line 83 def delete path, parameters uri = URI.parse([ @base_path, path ].join('/')) uri.query = [uri.query, parameters.to_query].compact.join('&') request = Net::HTTP::Delete.new [ uri.path, '?', uri.query ].join send_request request end
invoke(step)
click to toggle source
# File lib/conjur/dsl2/executor.rb, line 63 def invoke step send step['method'], step['path'], step['parameters'] end
send_request(request)
click to toggle source
# File lib/conjur/dsl2/executor.rb, line 91 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
to_params(params)
click to toggle source
Convert parameter keys to rails []-style keys
# File lib/conjur/dsl2/executor.rb, line 118 def to_params params 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/dsl2/executor.rb, line 75 def update path, parameters request = Net::HTTP::Put.new [ @base_path, path ].join('/') request.set_form_data to_params(parameters) send_request request end
Also aliased as: put
update_context_from_response(response)
click to toggle source
# File lib/conjur/dsl2/executor.rb, line 107 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