class Ratonvirus::AntivirusCheckService

Attributes

file_path[RW]
result[RW]

Public Class Methods

installed?() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 20
def self.installed?
  true
end
new(path) click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 13
def initialize(path)
  @file_path = path

  @logger = Logger.new(STDOUT)
  @result = Result.new
end

Public Instance Methods

call() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 24
def call
  perform_request
  @result
end

Private Instance Methods

base_url() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 78
def base_url
  Ratonvirus::Resty::Configuration.service_url
end
connection() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 53
def connection
  @connection ||= initialize_connection
end
initialize_connection() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 61
def initialize_connection
  Faraday.new(base_url, proxy: proxy) do |f|
    f.request :url_encoded
    f.request :multipart
    f.request :basic_auth, Ratonvirus::Resty::Configuration.username, Ratonvirus::Resty::Configuration.password if request_use_basic_auth?
    f.adapter :net_http
  end
end
initialize_upload_file() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 70
def initialize_upload_file
  Faraday::UploadIO.new(file_path, mime_type)
end
mime_type() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 74
def mime_type
  MimeMagic.by_path(file_path)
end
parse_response() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 47
def parse_response
  @logger.debug { "Parsing response #{@response.body}"}
  string_to_parse = @response.body.gsub("Status","\"Status\"").gsub("Description","\"Description\"")
  JSON.parse(string_to_parse).transform_keys(&:downcase)
end
perform_request() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 31
def perform_request
  @logger.debug { "Performing request to #{base_url}" }
  begin
    @response = connection.post(base_url) do |request|
      request.headers['Content-Type'] = 'multipart/form-data'
      request.body = { file: initialize_upload_file }
    end
    @result.parsed_response = parse_response
    unless @response.success?
      @logger.debug { "API request respond with status code #{@response.status}: #{parse_response}"}
    end
  rescue => exception
    @logger.debug { "There was an error performing the API request: #{exception.message}"}
  end
end
proxy() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 90
def proxy
  Ratonvirus::Resty::Configuration.proxy_url
end
request_headers() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 57
def request_headers
  { 'Content-Type' => 'application/json;charset=UTF-8' }
end
request_path() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 82
def request_path
  "#{base_url}"
end
request_use_basic_auth?() click to toggle source
# File lib/ratonvirus/services/antivirus_check_service.rb, line 86
def request_use_basic_auth?
  Ratonvirus::Resty::Configuration.username && Ratonvirus::Resty::Configuration.password
end