#!ruby
require 'savon'
require 'nokogiri'
require 'pp'
require 'securerandom'
# WSDL_URL = 'http://www.webservicex.net/globalweather.asmx?wsdl'
# we need a local wsdl file because Wasabi cannot deal with proxy authorization
WSDL_URL = 'weather.wsdl'
user = "user"
password = "secret"
secret = Base64.strict_encode64("#{user}:#{password}")
client = Savon.client(
wsdl: WSDL_URL,
proxy: "http://ubuntu.local:8080",
headers: { 'Proxy-Authorization' => "Basic #{secret}" },
log: false, # set true to switch on logging
log_level: :debug,
pretty_print_xml: true
)
city_name = ARGV[0] || "Waterloo"
country_name = ARGV[1] || "Canada"
response = client.call(:get_weather,
message: { "CityName" => city_name,
"CountryName" => country_name
}
)
begin
data = response.to_hash[:get_weather_response][:get_weather_result]
xml = Nokogiri::XML(data)
# puts xml.to_xml(:indent => 2)
loc = xml.at_css('Location').text.strip
loc.gsub!(/ +,/,',') # clean up for nice display
time = xml.at_css('Time').text.strip
temperature = xml.at_css('Temperature').text.strip
print "location : ", loc, "\n"
print "time : ", time, "\n"
print "temperature: ", temperature, "\n"
rescue Exception => e
print "sorry: ", e, "\n"
print "mispelled city or country?\n"
end
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎