class Vigilion::HTTP

Constants

HOW_TO_CONFIGURE
INVALID_CREDENTIALS

Attributes

method[RW]
options[RW]
url[RW]

Public Class Methods

digest(body) click to toggle source
# File lib/vigilion/http.rb, line 40
def self.digest(body)
  Digest::MD5.hexdigest("#{body}#{Vigilion::Configuration.secret_access_key}")
end
new() click to toggle source
# File lib/vigilion/http.rb, line 5
def initialize
  validate_access_keys
  @conn = ::Faraday.new(url: Configuration.server_url) do |c|
    c.request :multipart
    c.request :json
    c.response :json, content_type: /\bjson$/
    if Configuration.debug
      c.response :detailed_logger, Configuration.logger
    end
    c.adapter ::Faraday.default_adapter
    c.headers = {
      'X-Api-Key' => Configuration.access_key_id,
      'User-Agent' => "Vigilion #{Vigilion::VERSION} (#{RUBY_PLATFORM}, Ruby #{RUBY_VERSION})"
    }
  end
end

Public Instance Methods

get(uuid) click to toggle source
# File lib/vigilion/http.rb, line 30
def get(uuid)
  response = @conn.get "/scans/#{uuid}"
  response.body
end
scan_path(key, path, options = {}) click to toggle source
# File lib/vigilion/http.rb, line 26
def scan_path(key, path, options = {})
  send scan: options.merge({ key: key, file: Faraday::UploadIO.new(path, 'application') })
end
scan_url(key, url, options = {}) click to toggle source
# File lib/vigilion/http.rb, line 22
def scan_url(key, url, options = {})
  send scan: options.merge({ key: key, url: Addressable::URI.unescape(url) })
end
validate() click to toggle source
# File lib/vigilion/http.rb, line 35
def validate
  response = @conn.get "/projects/validate"
  process_response("", response)
end

Private Instance Methods

process_response(request, response) click to toggle source
# File lib/vigilion/http.rb, line 63
def process_response(request, response)
  raise Vigilion::Error.new(INVALID_CREDENTIALS) if response.status == 401
  raise Vigilion::Error.new("Payment required: #{response.body['error']}") if response.status == 402
  unless response.success?
    raise Vigilion::Error.new("Invalid scanning request: #{request}. Status: #{response.status}. Response: #{response.body}")
  end
  response.body
end
send(request) click to toggle source
# File lib/vigilion/http.rb, line 58
def send(request)
  response = @conn.post "/scans", request
  process_response(request, response)
end
validate_access_keys() click to toggle source
# File lib/vigilion/http.rb, line 72
def validate_access_keys
  raise Vigilion::Error.new("Configuration.access_key_id is not present\n#{HOW_TO_CONFIGURE}") unless Configuration.access_key_id
  raise Vigilion::Error.new("Configuration.secret_access_key is not present\n#{HOW_TO_CONFIGURE}") unless Configuration.secret_access_key
end