class Inspec::Resources::OpaApi

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method Inspec::Resources::Opa::new
# File lib/inspec/resources/opa_api.rb, line 9
def initialize(opts = {})
  @url = opts[:url] || nil
  @data = opts[:data] || nil
  fail_resource "OPA url and data are mandatory." if @url.nil? || @url.empty? || @data.nil? || @data.empty?
  @content = load_result
  super(@content)
end

Public Instance Methods

allow() click to toggle source
# File lib/inspec/resources/opa_api.rb, line 17
def allow
  @content["result"]
end
to_s() click to toggle source
# File lib/inspec/resources/opa_api.rb, line 21
def to_s
  "OPA api"
end

Private Instance Methods

load_result() click to toggle source
# File lib/inspec/resources/opa_api.rb, line 27
def load_result
  raise Inspec::Exceptions::ResourceFailed, "#{resource_exception_message}" if resource_failed?

  result = inspec.command("curl -X POST #{@url} -d @#{@data} -H 'Content-Type: application/json'")
  if result.exit_status == 0
    result.stdout.gsub("\n", "")
  else
    error = result.stdout + "\n" + result.stderr
    raise Inspec::Exceptions::ResourceFailed, "Error while executing OPA query: #{error}"
  end
end