class Kokki::IPInfo
Constants
- BASE_URL
- HOST
Public Class Methods
geo(address)
click to toggle source
# File lib/kokki/ipinfo.rb, line 16 def self.geo(address) new.geo address end
Public Instance Methods
geo(address)
click to toggle source
# File lib/kokki/ipinfo.rb, line 12 def geo(address) get("/#{address}/geo") { |json| json } end
Private Instance Methods
get(path, &block)
click to toggle source
# File lib/kokki/ipinfo.rb, line 53 def get(path, &block) uri = url_for(path) get = Net::HTTP::Get.new(uri) request(get, &block) end
https_options()
click to toggle source
# File lib/kokki/ipinfo.rb, line 26 def https_options if proxy = ENV["HTTPS_PROXY"] || ENV["https_proxy"] uri = URI(proxy) { proxy_address: uri.hostname, proxy_port: uri.port, proxy_from_env: false, use_ssl: true } else { use_ssl: true } end end
request(req) { |parse| ... }
click to toggle source
# File lib/kokki/ipinfo.rb, line 40 def request(req) Net::HTTP.start(HOST, 443, https_options) do |http| response = http.request(req) case response.code when "200" yield JSON.parse(response.body) else raise(Error, "Unsupported response code returned: #{response.code}") end end end
url_for(path)
click to toggle source
# File lib/kokki/ipinfo.rb, line 22 def url_for(path) URI(BASE_URL + path) end