Class: Mihari::Clients::ZoomEye
- Defined in:
- lib/mihari/clients/zoomeye.rb
Overview
ZoomEye API client
Constant Summary collapse
- PAGE_SIZE =
10
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
Attributes inherited from Base
#base_url, #headers, #pagination_interval, #timeout
Instance Method Summary collapse
- #http ⇒ ::HTTP::Client
-
#initialize(base_url = "https://api.zoomeye.ai", api_key:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) ⇒ ZoomEye
constructor
A new instance of ZoomEye.
-
#search(query, page: nil) ⇒ Structs::ZoomEye::Response
Search.
- #search_with_pagination(query, pagination_limit: Mihari.config.pagination_limit) ⇒ Enumerable<Structs::ZoomEye::Response>
Constructor Details
#initialize(base_url = "https://api.zoomeye.ai", api_key:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) ⇒ ZoomEye
Returns a new instance of ZoomEye.
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/mihari/clients/zoomeye.rb', line 22 def initialize( base_url = "https://api.zoomeye.ai", api_key:, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil ) raise(ArgumentError, "api_key is required") unless api_key headers["api-key"] = api_key super(base_url, headers:, pagination_interval:, timeout:) end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
13 14 15 |
# File 'lib/mihari/clients/zoomeye.rb', line 13 def api_key @api_key end |
Instance Method Details
#http ⇒ ::HTTP::Client
38 39 40 |
# File 'lib/mihari/clients/zoomeye.rb', line 38 def http @http ||= HTTP::Factory.build(headers:, timeout:, raise_exception: false) end |
#search(query, page: nil) ⇒ Structs::ZoomEye::Response
Search
51 52 53 54 55 |
# File 'lib/mihari/clients/zoomeye.rb', line 51 def search(query, page: nil) qbase64 = Base64.urlsafe_encode64(query) json = {qbase64:, page:}.compact Structs::ZoomEye::Response.from_dynamic! post_json("/v2/search", json:) end |
#search_with_pagination(query, pagination_limit: Mihari.config.pagination_limit) ⇒ Enumerable<Structs::ZoomEye::Response>
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/mihari/clients/zoomeye.rb', line 63 def search_with_pagination(query, pagination_limit: Mihari.config.pagination_limit) Enumerator.new do |y| (1..pagination_limit).each do |page| res = search(query, page:) break if res.nil? y.yield res break if res.total <= page * PAGE_SIZE sleep_pagination_interval end end end |