Class: Masklen::Client
- Inherits:
-
Object
- Object
- Masklen::Client
- Defined in:
- lib/masklen/client.rb
Overview
Constant Summary collapse
- DEFAULT_BASE_URL =
"https://masklen.dev"
Instance Method Summary collapse
-
#initialize(api_key:, base_url: DEFAULT_BASE_URL) ⇒ Client
constructor
Create a new client.
-
#lookup(ip, fields: nil) ⇒ Object
Look up a specific IPv4 or IPv6 address.
-
#lookup_batch(ips, fields: nil) ⇒ Object
Look up up to 1000 IP addresses in a single request.
-
#lookup_self(fields: nil) ⇒ Object
Look up the caller’s own IP address (as seen by the API server).
Constructor Details
#initialize(api_key:, base_url: DEFAULT_BASE_URL) ⇒ Client
Create a new client.
api_key - Your masklen.dev API key (required). base_url - Override the default base URL (optional, useful for testing).
19 20 21 22 23 24 |
# File 'lib/masklen/client.rb', line 19 def initialize(api_key:, base_url: DEFAULT_BASE_URL) raise ArgumentError, "api_key is required" if api_key.nil? || api_key.strip.empty? @api_key = api_key @base_url = base_url.chomp("/") end |
Instance Method Details
#lookup(ip, fields: nil) ⇒ Object
Look up a specific IPv4 or IPv6 address.
ip - The IP address string to look up. fields - Optional array of field groups to include in the response,
e.g. ["location", "privacy"]. When nil, the API returns all fields.
Returns a LookupResult. Raises Masklen::Error on API errors.
34 35 36 37 38 39 40 |
# File 'lib/masklen/client.rb', line 34 def lookup(ip, fields: nil) raise ArgumentError, "ip is required" if ip.nil? || ip.to_s.strip.empty? query = build_fields_query(fields) hash = request(:get, "/v1/lookup/#{URI.encode_www_form_component(ip.to_s)}", query: query) LookupResult.from_hash(hash) end |
#lookup_batch(ips, fields: nil) ⇒ Object
Look up up to 1000 IP addresses in a single request.
ips - Array of IP address strings (max 1000). fields - Optional array of field groups to include in the response.
Returns a BatchResult whose results array contains LookupResult or BatchItemError objects. Raises Masklen::Error on API errors.
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/masklen/client.rb', line 62 def lookup_batch(ips, fields: nil) raise ArgumentError, "ips must be an Array" unless ips.is_a?(Array) raise ArgumentError, "ips cannot be empty" if ips.empty? raise ArgumentError, "ips cannot exceed 1000 entries" if ips.length > 1000 query = build_fields_query(fields) body = JSON.generate({ "ips" => ips }) hash = request(:post, "/v1/lookup/batch", query: query, body: body) BatchResult.from_hash(hash) end |
#lookup_self(fields: nil) ⇒ Object
Look up the caller’s own IP address (as seen by the API server).
fields - Optional array of field groups to include in the response.
Returns a LookupResult. Raises Masklen::Error on API errors.
48 49 50 51 52 |
# File 'lib/masklen/client.rb', line 48 def lookup_self(fields: nil) query = build_fields_query(fields) hash = request(:get, "/v1/lookup", query: query) LookupResult.from_hash(hash) end |