Class: Mihari::Clients::HunterHow

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

Overview

hunter.how API client

Constant Summary collapse

PAGE_SIZE =
100

Instance Attribute Summary collapse

Attributes inherited from Base

#base_url, #headers, #pagination_interval, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(base_url = "https://api.hunter.how", api_key:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) ⇒ HunterHow

Returns a new instance of HunterHow.

Parameters:

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

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/mihari/clients/hunterhow.rb', line 23

def initialize(
  base_url = "https://api.hunter.how",
  api_key:,
  headers: {},
  pagination_interval: Mihari.config.pagination_interval,
  timeout: nil
)
  raise(ArgumentError, "api_key is required") unless api_key

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

  @api_key = api_key
end

Instance Attribute Details

#api_keyString (readonly)

Returns:

  • (String)


14
15
16
# File 'lib/mihari/clients/hunterhow.rb', line 14

def api_key
  @api_key
end

Instance Method Details

#search(query, start_time:, end_time:, page: 1, page_size: PAGE_SIZE) ⇒ Mihari::Structs::HunterHow::Response

Parameters:

  • query (String)

    String used to query our data

  • page (Integer) (defaults to: 1)

    Default 1, Maximum: 500

  • page_size (Integer) (defaults to: PAGE_SIZE)

    Default 100, Maximum: 100

  • start_time (String)
  • end_time (String)

Returns:



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/mihari/clients/hunterhow.rb', line 46

def search(query, start_time:, end_time:, page: 1, page_size: PAGE_SIZE)
  params = {
    query: Base64.urlsafe_encode64(query),
    page: page,
    page_size: page_size,
    start_time: start_time,
    end_time: end_time,
    "api-key": api_key
  }.compact
  Structs::HunterHow::Response.from_dynamic! get_json("/search", params: params)
end

#search_with_pagination(query, start_time:, end_time:, page_size: PAGE_SIZE, pagination_limit: Mihari.config.pagination_limit) ⇒ Enumerable<Mihari::Structs::HunterHow::Response>

Parameters:

  • query (String)

    String used to query our data

  • page_size (Integer) (defaults to: PAGE_SIZE)

    Default 100, Maximum: 100

  • pagination_limit (Integer) (defaults to: Mihari.config.pagination_limit)
  • start_time (String)
  • end_time (String)

Returns:



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/mihari/clients/hunterhow.rb', line 67

def search_with_pagination(
  query,
  start_time:,
  end_time:,
  page_size: PAGE_SIZE,
  pagination_limit: Mihari.config.pagination_limit
)
  Enumerator.new do |y|
    (1..pagination_limit).each do |page|
      res = search(
        query,
        start_time: start_time,
        end_time: end_time,
        page: page,
        page_size: page_size
      )

      y.yield res

      break if res.data.list.length < page_size

      sleep_pagination_interval
    end
  end
end