class VtApi::ApiV2::URL

Class that represents URL scan report.

Attributes

filescan_id[R]
id[R]
scan_date[R]
url[R]

Public Class Methods

from_response(api_resp) click to toggle source

Shorthand for initialize.

@see initialize

# File lib/vt_api/api/v2/url.rb, line 38
def self.from_response(api_resp)
        # noinspection RubyResolve
        if api_resp.response_code.nil? || (api_resp.response_code < 1)
                nil
        else
                report = new api_resp
                report
        end
end
new(api_resp) click to toggle source

Initializes new object from VT API response. @note Direct creation of object cas cause errors since it doesn't contain any validity checks.

Use predefined API method bindings instead.

@see .report @see .schedule_scan

@param [OpenStruct] api_resp

# File lib/vt_api/api/v2/url.rb, line 58
def initialize(api_resp)
        load_id!(api_resp)
        load_meta!(api_resp)
        load_scans!(api_resp)
end
report(resource:, scan: false) click to toggle source

@see developers.virustotal.com/v2.0/reference#url-report

@param [String] resource @param [Boolean] scan Schedule URL scan if it is not present in system. @return [URL] URL report object is present, nil otherwise.

# File lib/vt_api/api/v2/url.rb, line 16
def report(resource:, scan: false)
        resp = ApiV2.provider.request 'url.report',
                                      apikey:        VtApi.options.token,
                                      resource:      resource,
                                      schedule_scan: (scan ? 1 : 0)
        pp resp
        from_response resp
end
schedule_scan(url:) click to toggle source

@see developers.virustotal.com/v2.0/reference#url-scan

@param [String] url @return [String] Scheduled scan ID.

# File lib/vt_api/api/v2/url.rb, line 29
def schedule_scan(url:)
        resp = ApiV2.provider.request 'url.report', apikey: VtApi.options.token, url: url
        resp.scan_id
end

Private Instance Methods

load_id!(api_resp) click to toggle source

noinspection RubyResolve

# File lib/vt_api/api/v2/url.rb, line 80
def load_id!(api_resp)
        @id  = api_resp.scan_id
        @url = api_resp.url
end
load_meta!(api_resp) click to toggle source
# File lib/vt_api/api/v2/url.rb, line 73
def load_meta!(api_resp)
        @scan_date   = api_resp.scan_date
        @permalink   = api_resp.permalink
        @filescan_id = api_resp.filescan_id
end
load_scans!(api_resp) click to toggle source

noinspection RubyResolve

# File lib/vt_api/api/v2/url.rb, line 67
def load_scans!(api_resp)
        @scan_count    = api_resp.total
        @trigger_count = api_resp.positives
        @scans         = api_resp.scans
end