Class: VerifIP::Client
- Inherits:
-
Object
- Object
- VerifIP::Client
- Defined in:
- lib/verifip/client.rb
Overview
Client for the VerifIP IP fraud scoring API.
Constant Summary collapse
- DEFAULT_BASE_URL =
"https://api.verifip.com"- DEFAULT_TIMEOUT =
30- DEFAULT_MAX_RETRIES =
3- RETRYABLE_STATUSES =
[429, 500, 502, 503, 504].freeze
- USER_AGENT =
"verifip-ruby/#{VerifIP::VERSION}"
Instance Method Summary collapse
-
#check(ip) ⇒ CheckResponse
Check a single IP address for fraud risk.
-
#check_batch(ips) ⇒ BatchResponse
Check multiple IP addresses in a single request.
-
#health ⇒ HealthResponse
Check API server health status.
-
#initialize(api_key:, base_url: DEFAULT_BASE_URL, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES) ⇒ Client
constructor
Create a new VerifIP client.
- #inspect ⇒ Object
-
#rate_limit_info ⇒ RateLimitInfo?
Most recently observed rate limit info.
- #to_s ⇒ Object
Constructor Details
#initialize(api_key:, base_url: DEFAULT_BASE_URL, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES) ⇒ Client
Create a new VerifIP client.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/verifip/client.rb', line 33 def initialize(api_key:, base_url: DEFAULT_BASE_URL, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES) raise ArgumentError, "api_key is required" if api_key.nil? || api_key.empty? @api_key = api_key @base_url = base_url.chomp("/") @timeout = timeout @max_retries = max_retries @rate_limit_info = nil @mutex = Mutex.new end |
Instance Method Details
#check(ip) ⇒ CheckResponse
Check a single IP address for fraud risk.
51 52 53 54 55 56 |
# File 'lib/verifip/client.rb', line 51 def check(ip) raise ArgumentError, "ip is required" if ip.nil? || ip.empty? data = request(:get, "/v1/check?ip=#{URI.encode_uri_component(ip)}", auth: true) CheckResponse.from_hash(data) end |
#check_batch(ips) ⇒ BatchResponse
Check multiple IP addresses in a single request.
Requires Starter plan or higher. Maximum 100 IPs per request.
64 65 66 67 68 69 70 71 |
# File 'lib/verifip/client.rb', line 64 def check_batch(ips) raise ArgumentError, "ips list is required and cannot be empty" if ips.nil? || ips.empty? raise ArgumentError, "Maximum 100 IPs per batch request" if ips.size > 100 body = JSON.generate({ ips: ips }) data = request(:post, "/v1/check/batch", body: body, auth: true) BatchResponse.from_hash(data) end |
#health ⇒ HealthResponse
Check API server health status. Does not require authentication.
76 77 78 79 |
# File 'lib/verifip/client.rb', line 76 def health data = request(:get, "/health", auth: false) HealthResponse.from_hash(data) end |
#inspect ⇒ Object
82 |
# File 'lib/verifip/client.rb', line 82 def inspect = to_s |
#rate_limit_info ⇒ RateLimitInfo?
Returns most recently observed rate limit info.
23 24 25 |
# File 'lib/verifip/client.rb', line 23 def rate_limit_info @mutex.synchronize { @rate_limit_info } end |
#to_s ⇒ Object
81 |
# File 'lib/verifip/client.rb', line 81 def to_s = "VerifIP::Client(base_url=#{@base_url})" |