How do I call IPRout with Ruby?
This example looks up 8.8.8.8 unless the client example uses /ip to demonstrate caller lookup. Replace only the route when switching modes.
uri = URI("https://api.iprout.com/ip/8.8.8.8")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch('IPROUT_API_KEY')}"
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 10) { |http| http.request(request) }
raise "IPRout HTTP #{response.code}" unless response.is_a?(Net::HTTPSuccess)
data = JSON.parse(response.body)How do I look up the caller instead?
Keep the headers and error handling unchanged, but request https://api.iprout.com/ip with no address after /ip.
What does production code need?
Keep the key server-side, use a finite timeout, inspect HTTP status before decoding success data, and handle 401, 422, 429, and transient 500 responses.
- Read IPROUT_API_KEY from a secret environment
- Do not retry 401 or 422 automatically
- Use bounded backoff for transient server or network failures