R
Rudolfs Osins
Hello everyone !
Here is my solution, actually it's my first ruby program, I just
started learning... Suggestions on how to improve my code are
welcome
This is how it looks when executed, I couldn't find where to turn
these warnings off :/
------------------------------------------------------------------
root@black /# ./weather.rb madrid
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}binding
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}operation
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}urlEncoded
ignored element: {http://schemas.xmlsoap.org/wsdl/mime/}mimeXml
ignored element: {http://schemas.xmlsoap.org/wsdl/mime/}content
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}address
The temperature in Madrid / Cuatro Vientos is 3 C
------------------------------------------------------------------
#!/usr/local/bin/ruby
require 'soap/wsdlDriver'
require 'rexml/document'
URL = 'http://www.webservicex.net/globalweather.asmx?WSDL'
# process the comandline arguments
if ARGV[0] == nil
abort("Usage: weather.rb city")
else
city = ARGV.join(' ')
end
soap = SOAP::WSDLDriverFactory.new(URL).create_rpc_driver
begin
weather = soap.GetWeather
CityName => city, :CountryName => "")
# strip the first line with <? ?> stuff, else REXML wont parse
xml = weather.getWeatherResult.gsub(/(<\?.*?>\n)/, '')
data = REXML:
ocument.new(xml)
# celsius degrees are in parentheses
data.elements["//Temperature"].text[/\((.*)\)/]; temp = $1
data.elements["//Location"].text[/^(.*),/]; loc = $1
# show the gathered data
puts "The temperature in " + loc + " is " + temp
rescue
puts "Could not find data for your supplied city: " + city
end
Here is my solution, actually it's my first ruby program, I just
started learning... Suggestions on how to improve my code are
welcome
This is how it looks when executed, I couldn't find where to turn
these warnings off :/
------------------------------------------------------------------
root@black /# ./weather.rb madrid
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}binding
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}operation
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}urlEncoded
ignored element: {http://schemas.xmlsoap.org/wsdl/mime/}mimeXml
ignored element: {http://schemas.xmlsoap.org/wsdl/mime/}content
ignored element: {http://schemas.xmlsoap.org/wsdl/http/}address
The temperature in Madrid / Cuatro Vientos is 3 C
------------------------------------------------------------------
#!/usr/local/bin/ruby
require 'soap/wsdlDriver'
require 'rexml/document'
URL = 'http://www.webservicex.net/globalweather.asmx?WSDL'
# process the comandline arguments
if ARGV[0] == nil
abort("Usage: weather.rb city")
else
city = ARGV.join(' ')
end
soap = SOAP::WSDLDriverFactory.new(URL).create_rpc_driver
begin
weather = soap.GetWeather
# strip the first line with <? ?> stuff, else REXML wont parse
xml = weather.getWeatherResult.gsub(/(<\?.*?>\n)/, '')
data = REXML:
# celsius degrees are in parentheses
data.elements["//Temperature"].text[/\((.*)\)/]; temp = $1
data.elements["//Location"].text[/^(.*),/]; loc = $1
# show the gathered data
puts "The temperature in " + loc + " is " + temp
rescue
puts "Could not find data for your supplied city: " + city
end