Class: Mihari::Clients::Censys::V3

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

Instance Attribute Summary

Attributes inherited from Base

#base_url, #headers, #pagination_interval, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(base_url = "https://api.platform.censys.io", pat:, organization_id:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) ⇒ V3

Returns a new instance of V3.

Raises:

  • (ArgumentError)


84
85
86
87
88
89
90
91
92
93
# File 'lib/mihari/clients/censys.rb', line 84

def initialize(base_url = "https://api.platform.censys.io", pat:, organization_id:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil)
  raise(ArgumentError, "pat is required") if pat.nil?
  raise(ArgumentError, "organization_id is required") if organization_id.nil?

  headers["Authorization"] = "Bearer #{pat}"
  headers["Accept"] = "application/vnd.censys.api.v3.host.v1+json"
  headers["X-Organization-ID"] = organization_id

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

Instance Method Details

#search(query, page_size: nil, page_token: nil) ⇒ Object



95
96
97
98
# File 'lib/mihari/clients/censys.rb', line 95

def search(query, page_size: nil, page_token: nil)
  json = {query: query, page_size:, page_token:}.compact
  Structs::Censys::V3::Response.from_dynamic! post_json("/v3/global/search/query", json:)
end

#search_with_pagination(query, page_size: nil, pagination_limit: Mihari.config.pagination_limit) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/mihari/clients/censys.rb', line 100

def search_with_pagination(query, page_size: nil, pagination_limit: Mihari.config.pagination_limit)
  page_token = nil
  Enumerator.new do |y|
    pagination_limit.times do
      res = search(query, page_size:, page_token:)
      y.yield res
      page_token = res.result&.next_page_token
      break if page_token.nil? || page_token.empty?
      sleep_pagination_interval
    end
  end
end