openstreetmap-website/lib/quova.rb
2015-02-20 08:56:16 +00:00

65 lines
1.3 KiB
Ruby

##
# Load required libraries
require 'soap/wsdlDriver'
##
# Monkey patch WSDL parser to stop it moaning
module WSDL
class Parser
def warn(_msg)
end
end
end
##
# Provide interface to Quova geolocation service
module Quova
##
# Access details for WSDL description
WSDL_URL = "https://webservices.quova.com/OnDemand/GeoPoint/v1/default.asmx?WSDL"
WSDL_USER = QUOVA_USERNAME
WSDL_PASS = QUOVA_PASSWORD
##
# Status codes
SUCCESS = 0
IPV6_NO_SUPPORT = 1
INVALID_CREDENTIALS = 2
NOT_MAPPED = 3
INVALID_IP_FORMAT = 4
IP_ADDRESS_NULL = 5
ACCESS_DENIED = 6
QUERY_LIMIT = 7
OUT_OF_SERVICE = 10
##
# Create SOAP endpoint
@@soap = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
@@soap.options["protocol.http.basic_auth"] << [WSDL_URL, WSDL_USER, WSDL_PASS]
##
# Accessor for SOAP endpoint
def self.soap
@@soap
end
##
# Class representing geolocation details for an IP address
class IpInfo
def initialize(ip_address)
@ipinfo = Quova.soap.GetIpInfo(:ipAddress => ip_address)
end
def status
@ipinfo["GetIpInfoResult"]["Response"]["Status"].to_i
end
def country_code
@ipinfo["GetIpInfoResult"]["Location"]["Country"]["Name"]
end
def country_confidence
@ipinfo["GetIpInfoResult"]["Location"]["Country"]["Confidence"]
end
end
end