class Censys::Search::Response

Constants

RESULTS

Attributes

metadata[R]
results[R]
status[R]

Public Class Methods

new(api, result_type, params, response) click to toggle source

@param [API] api

Parent API.

@param [:ipv4, :website, :certificate] result_type

Result type.

@param [Hash] params

Search parameters.

@param [Hash{String => Object}] response

Response JSON Hash.
# File lib/censys/search/response.rb, line 38
def initialize(api, result_type, params, response)
  @api         = api
  @result_type = result_type
  @params      = params

  @status   = response['status']
  @metadata = Metadata.new(response['metadata'])

  unless (result_class = RESULTS[@result_type])
    raise(ArgumentError, "invalid result type: #{@result_type}")
  end

  @results = response['results'].map do |result|
    result_class.new(result, @api)
  end
end

Public Instance Methods

each(&block) click to toggle source

Enumerates over all results in the response.

@yield [result]

The given block will be passed each result.

@yieldparam [IPv4, Website, Certificate] result

A result in the response.

@return [Enumerator]

If no block is given, an Enumerator will be returned.
# File lib/censys/search/response.rb, line 76
def each(&block)
  @results.each(&block)
end
each_page() { |page| ... } click to toggle source

Enumerates through each page of results.

@yield [page]

The given block will be passed each page.

@yieldparam [Response] page

The response containing the next page of results.

@return [Enumerator]

If no block was given, an enumerator will be returned.
# File lib/censys/search/response.rb, line 104
def each_page
  return enum_for(__method__) unless block_given?

  page = self

  while page
    yield page

    page = page.next_page
  end
end
next()
Alias for: next_page
next_page() click to toggle source

Queries the next page of results.

@return [Search::Response, nil]

The next page of results or `nil` if there are no more pages.
# File lib/censys/search/response.rb, line 86
def next_page
  @api.search(@result_type, @params.merge(page: @metadata.page + 1)) if @metadata.page < @metadata.pages
end
Also aliased as: next
ok?() click to toggle source

Determines if the response has status of `ok`.

@return [Boolean]

# File lib/censys/search/response.rb, line 60
def ok?
  @status == 'ok'
end
pages() click to toggle source

Provides access to additional pages.

@return [Enumerator]

# File lib/censys/search/response.rb, line 121
def pages
  enum_for(:each_page)
end