class LogstashAuditor::LogstashAuditor

Public Instance Methods

audit(audit_data) click to toggle source

inversion of control method required by the AuditorAPI

# File lib/logstash_auditor/auditor.rb, line 19
def audit(audit_data)
  request = create_request(audit_data)
  http = create_http_transport
  send_request_to_server(http, request)
end
configuration_is_valid?(configuration) click to toggle source

inversion of control method required by the AuditorAPI

# File lib/logstash_auditor/auditor.rb, line 8
def configuration_is_valid?(configuration)
  basic_auth_configuration_valid?(configuration) or
  certificate_auth_configuration_valid?(configuration)
end
prefer_direct_call?() click to toggle source

inversion of control method required by the AuditorAPI

# File lib/logstash_auditor/auditor.rb, line 14
def prefer_direct_call?
  false
end

Private Instance Methods

add_basic_auth(request) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 62
def add_basic_auth(request)
  request.basic_auth(@configuration['username'], @configuration['password'])
end
add_certificate_authentication(http) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 49
def add_certificate_authentication(http)
  http.cert = OpenSSL::X509::Certificate.new(@configuration['certificate'])
  http.key = OpenSSL::PKey::RSA.new(@configuration['private_key'])
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
basic_auth_configuration_valid?(configuration) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 27
def basic_auth_configuration_valid?(configuration)
  required_parameters = ['host_url', 'username', 'password']
  required_parameters.each { |parameter| return false unless configuration.include?(parameter) }
  return true
end
certificate_auth_configuration_valid?(configuration) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 33
def certificate_auth_configuration_valid?(configuration)
  required_parameters = ['host_url', 'certificate', 'private_key']
  required_parameters.each { |parameter| return false unless configuration.include?(parameter) }
  return true
end
create_http_transport() click to toggle source
# File lib/logstash_auditor/auditor.rb, line 39
def create_http_transport
  uri = URI.parse(@configuration['host_url'])
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.is_a?(URI::HTTPS)
  http.read_timeout = @configuration['timeout']
  http.open_timeout = @configuration['timeout']
  add_certificate_authentication(http) if certificate_auth_configuration_valid?(@configuration)
  return http
end
create_request(audit_data) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 55
def create_request(audit_data)
  request = Net::HTTP::Post.new("/", initheader = {'Content-Type' => 'text/plain'})
  add_basic_auth(request) if @configuration['username'] and @configuration['password']
  request.body = audit_data
  return request
end
send_request_to_server(http, request) click to toggle source
# File lib/logstash_auditor/auditor.rb, line 66
def send_request_to_server(http, request)
  response = http.request(request) rescue nil
  raise StandardError, 'Failed to create connection' if response.nil?
  raise StandardError, "Server rejected post with error code #{response.code}" unless response.code == "200"
end