Current section
Files
Jump to
Current section
Files
lib/virus_total.ex
defmodule VirusTotal do
use GenServer
@client Application.get_env(:virus_total, :http_client, VirusTotal.Client)
def start(name, key) do
VirusTotal.Supervisor.start_child(name, key)
end
def stop(name) do
GenServer.call(name, :stop)
end
def start_link(name, key) do
GenServer.start_link(__MODULE__, key, name: name)
end
def ip_address_report(name, ip_address) do
GenServer.call(name, {:ip_address_report, ip_address})
end
def url_scan(name, url) do
GenServer.call(name, {:url_scan, url})
end
def url_report(name, scan_id) do
GenServer.call(name, {:url_report, scan_id})
end
def domain_report(name, domain) do
GenServer.call(name, {:domain_report, domain})
end
def file_scan(name, file) do
GenServer.call(name, {:file_scan, file})
end
def file_rescan(name, resource) do
GenServer.call(name, {:file_rescan, resource})
end
def file_report(name, resource) do
GenServer.call(name, {:file_report, resource})
end
def comment(name, resource, comment) do
GenServer.call(name, {:comment, resource, comment})
end
def init(key) do
{:ok, key}
end
def handle_call({:ip_address_report, ip_address}, _from, key) do
results = @client.ip_address_report(key, ip_address)
{:reply, results, key}
end
def handle_call({:url_scan, url}, _from, key) do
results = @client.url_scan(key, url)
{:reply, results, key}
end
def handle_call({:url_report, scan_id}, _from, key) do
results = @client.url_report(key, scan_id)
{:reply, results, key}
end
def handle_call({:domain_report, domain}, _from, key) do
results = @client.domain_report(key, domain)
{:reply, results, key}
end
def handle_call({:file_scan, file}, _from, key) do
results = @client.file_scan(key, file)
{:reply, results, key}
end
def handle_call({:file_rescan, resource}, _from, key) do
results = @client.file_rescan(key, resource)
{:reply, results, key}
end
def handle_call({:file_report, resource}, _from, key) do
results = @client.file_report(key, resource)
{:reply, results, key}
end
def handle_call({:comment, resource, comment}, _from, key) do
results = @client.comment(key, resource, comment)
{:reply, results, key}
end
def handle_call(:stop, _from, state) do
{:stop, :normal, :stopped, state}
end
end