Per tal de consultar el temps d’una ciutat.
ruby weather.rb London
======================
City: London
Temp: 14.0°C
Feels Like: 13.9°C
Humidity: 88%
Wind Speed: 6.8 kph
Visibility: 9.0 km
======================
Codi font:
#!/usr/bin/env ruby
# CLI app that brings in current location weather.
require 'json'
require 'uri'
require 'net/http'
def weather
  api_key = ENV['APIXU_API_KEY'] || "6510b92495fd472ca30155709172803&q"
  ip = get_ip
  city = ARGV[0] || ip["city"]
  state = ARGV[1] || ip["region"]
  country = ip["countryCode"]
  weather = get_weather(api_key, city, state)
  if country == "US"
    us_printer(weather)
  else
    intl_printer(weather)
  end
end
def get_ip
  uri = URI("http://ip-api.com/json")
  response = Net::HTTP.get(uri)
  JSON.parse(response)
end
def get_weather(api_key, city, state)
    uri = URI("https://api.apixu.com/v1/current.json?key=#{api_key}=#{city}+#{state}")
    response = Net::HTTP.get(uri)
    JSON.parse(response)
end
def us_printer(parsed)
  # Printer for US users
  location_name = parsed["location"]["name"]
  temp = parsed["current"]["temp_f"]
  wind_speed = parsed["current"]["wind_mph"]
  humidity = parsed["current"]["humidity"]
  feels_like = parsed["current"]["feelslike_f"]
  visibility = parsed["current"]["vis_miles"]
  puts "======================"
  puts "City: #{location_name}"
  puts "Temp: #{temp}°F"
  puts "Feels Like: #{feels_like}°F"
  puts "Humidity: #{humidity}%"
  puts "Wind Speed: #{wind_speed} mph"
  puts "Visibility: #{visibility} mi"
  puts "======================"
end
def intl_printer(parsed)
  # Printer for metric users
  location_name = parsed["location"]["name"]
  temp = parsed["current"]["temp_c"]
  wind_speed = parsed["current"]["wind_kph"]
  humidity = parsed["current"]["humidity"]
  feels_like = parsed["current"]["feelslike_c"]
  visibility = parsed["current"]["vis_km"]
  puts "======================"
  puts "City: #{location_name}"
  puts "Temp: #{temp}°C"
  puts "Feels Like: #{feels_like}°C"
  puts "Humidity: #{humidity}%"
  puts "Wind Speed: #{wind_speed} kph"
  puts "Visibility: #{visibility} km"
  puts "======================"
end
weather
Font: Jakemeyer