Class: Mihari::Clients::BinaryEdge

Inherits:
Base
  • Object
show all
Defined in:
lib/mihari/clients/binaryedge.rb

Overview

BinaryEdge API client

Instance Attribute Summary

Attributes inherited from Base

#base_url, #headers, #pagination_interval, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(base_url = "https://api.binaryedge.io", api_key:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) ⇒ BinaryEdge

Returns a new instance of BinaryEdge.

Parameters:

  • base_url (String) (defaults to: "https://api.binaryedge.io")
  • api_key (String, nil)
  • headers (Hash) (defaults to: {})
  • timeout (Integer, nil) (defaults to: nil)
  • pagination_interval (Integer) (defaults to: Mihari.config.pagination_interval)


16
17
18
19
20
21
22
23
24
25
26
# File 'lib/mihari/clients/binaryedge.rb', line 16

def initialize(
  base_url = "https://api.binaryedge.io",
  api_key:,
  headers: {},
  pagination_interval: Mihari.config.pagination_interval,
  timeout: nil
)
  headers["x-key"] = api_key

  super(base_url, headers:, timeout:, pagination_interval:)
end

Instance Method Details

#search(query, page: 1, only_ips: nil) ⇒ Mihari::Structs::BinaryEdge::Response

Parameters:

  • query (String)

    String used to query our data

  • page (Integer) (defaults to: 1)

    Default 1, Maximum: 500

  • only_ips (Integer, nil) (defaults to: nil)

    If selected, only output IP addresses, ports and protocols.

Returns:



35
36
37
38
39
40
41
42
# File 'lib/mihari/clients/binaryedge.rb', line 35

def search(query, page: 1, only_ips: nil)
  params = {
    query:,
    page:,
    only_ips:
  }.compact
  Structs::BinaryEdge::Response.from_dynamic! get_json("/v2/query/search", params:)
end

#search_with_pagination(query, only_ips: nil, pagination_limit: Mihari.config.pagination_limit) ⇒ Enumerable<Mihari::Structs::BinaryEdge::Response>

Parameters:

  • query (String)
  • only_ips (Integer, nil) (defaults to: nil)
  • pagination_limit (Integer) (defaults to: Mihari.config.pagination_limit)

Returns:



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/mihari/clients/binaryedge.rb', line 51

def search_with_pagination(query, only_ips: nil, pagination_limit: Mihari.config.pagination_limit)
  Enumerator.new do |y|
    (1..pagination_limit).each do |page|
      res = search(query, page:, only_ips:)

      y.yield res

      break if res.events.length < res.pagesize

      sleep_pagination_interval
    end
  end
end