Class: Osakana::Website

Inherits:
Object
  • Object
show all
Defined in:
lib/osakana/website.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ipv4: nil, domain: nil, date: nil) ⇒ Website

Returns a new instance of Website.

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
# File 'lib/osakana/website.rb', line 9

def initialize(ipv4: nil, domain: nil, date: nil)
  raise ArgumentError, "Please provide ipv4 or domain for the initialization." if ipv4.nil? && domain.nil?

  @primal_type = domain ? "domain" : "ipv4"

  @ipv4 = ipv4
  @domain = domain
  @date = date ? DateTime.parse(date).to_date.to_s : "N/A"

  @enricher = Enrichers::Enricher.new
end

Instance Attribute Details

#dateObject (readonly)

Returns the value of attribute date.



7
8
9
# File 'lib/osakana/website.rb', line 7

def date
  @date
end

#primal_typeObject (readonly)

Returns the value of attribute primal_type.



7
8
9
# File 'lib/osakana/website.rb', line 7

def primal_type
  @primal_type
end

Instance Method Details

#domainObject



21
22
23
24
25
# File 'lib/osakana/website.rb', line 21

def domain
  @domain ||= [].tap do |out|
    out << @enricher.ipv4_to_domain(ipv4)
  end.first || "N/A"
end

#ipv4Object



27
28
29
30
31
# File 'lib/osakana/website.rb', line 27

def ipv4
  @ipv4 ||= [].tap do |out|
    out << @enricher.domain_to_ipv4(domain)
  end.first || "N/A"
end

#summaryObject



33
34
35
# File 'lib/osakana/website.rb', line 33

def summary
  @summary ||= "#{domain}, #{ipv4} (date: #{date})"
end

#to_attachementObject



45
46
47
48
49
50
51
52
53
# File 'lib/osakana/website.rb', line 45

def to_attachement
  {
    fallback: "urlscan.io link",
    title: summary,
    title_link: urlscan_link,
    footer: "urlscan.io",
    footer_icon: "http://www.google.com/s2/favicons?domain=urlscan.io"
  }
end


41
42
43
# File 'lib/osakana/website.rb', line 41

def urlscan_link
  primal_type == "domain" ? "https://urlscan.io/domain/#{domain}" : "https://urlscan.io/ip/#{ipv4}"
end


37
38
39
# File 'lib/osakana/website.rb', line 37

def vt_link
  primal_type == "domain" ? "https://www.virustotal.com/#/domain/#{domain}" : "https://www.virustotal.com/#/ip-address/#{ipv4}"
end