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
post(path, parameters)
Alias for: create
put(path, parameters)
Alias for: update
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