lib/securitytrails/api.rb in securitytrails-0.2.0 vs lib/securitytrails/api.rb in securitytrails-1.0.0

- old
+ new

@@ -1,21 +1,75 @@ # frozen_string_literal: true +require "forwardable" + module SecurityTrails class API - attr_reader :domain - attr_reader :domains - attr_reader :history - attr_reader :ips - attr_reader :feeds + extend Forwardable + attr_reader :api_key + def initialize(api_key = ENV["SECURITYTRAILS_API_KEY"]) - raise(ArgumentError, "'api_key' argument is required") unless api_key + @api_key = api_key + raise ArgumentError, "'api_key' argument is required" unless api_key + end - @domain = Clients::Domain.new(api_key) - @domains = Clients::Domains.new(api_key) - @history = Clients::History.new(api_key) - @ips = Clients::IPs.new(api_key) - @feeds = Clients::Feeds.new(api_key) + # + # General API client + # + # @return [SecurityTrails::Clients::General] + # + def general + @general ||= Clients::General.new(api_key) + end + + %w(ping usage scroll).each do |delegate_method| + sym = delegate_method.to_sym + def_delegator :general, sym, sym + end + + # + # Domain API client + # + # @return [SecurityTrails::Clients::Domain] + # + def domain + @domain ||= Clients::Domain.new(api_key) + end + + # + # Domains API client + # + # @return [SecurityTrails::Clients::Domains] + # + def domains + @domains ||= Clients::Domains.new(api_key) + end + + # + # History API client + # + # @return [SecurityTrails::Clients::History] + # + def history + @history ||= Clients::History.new(api_key) + end + + # + # IPs API client + # + # @return [SecurityTrails::Clients::IPs] + # + def ips + @ips ||= Clients::IPs.new(api_key) + end + + # + # Feed API client + # + # @return [SecurityTrails::Clients::Feeds] + # + def feeds + @feeds ||= Clients::Feeds.new(api_key) end end end