class Place

Attributes

max_avg[RW]
max_today[RW]
min_avg[RW]
min_today[RW]
name[RW]

Public Class Methods

get_array_from_xml( place, places_list ) click to toggle source
# File lib/place.rb, line 26
def Place.get_array_from_xml( place, places_list )
  aff_id = "&affiliate_id=fvzoaihj8486"
  necessary_data = [ :temperaturaminima, :temperaturamaxima ]
  city_values = {}

  place_url = ( places_list[place].sub( "&", "&" ) + aff_id )
  doc = Nokogiri::XML( open( place_url ) )
  data_city = doc.xpath( "//var" )
  data_city.each do |weather_param|
    city_values[ weather_param.children.children[0].to_s.to_sym_city ] = weather_param.children.children[2..-1].map{ |att| att.attributes['value'].value.to_f }
  end
  city_values = city_values.select{ |key, value| necessary_data.include?( key ) }
  return city_values
end
get_places_list() click to toggle source
# File lib/place.rb, line 43
def Place.get_places_list
  begin
    doc = Nokogiri::XML(open("http://api.tiempo.com/index.php?api_lang=es&division=102&affiliate_id=fvzoaihj8486"))
    data_cities = doc.xpath( "//data" )
    places = {}
    names = []
    data_cities.each do |data_city|
      places[ data_city.children.children[0].to_s.to_sym_city ] = data_city.children.children[1].to_s
      names << data_city.children.children[0].to_s
    end
    return places, names
  rescue
    return false, false
  end
end
new( name, max_today, min_today, max_avg, min_avg ) click to toggle source
# File lib/place.rb, line 8
def initialize( name, max_today, min_today, max_avg, min_avg )
   @name = name
   @max_today = max_today
   @min_today = min_today
   @max_avg = max_avg
   @min_avg = min_avg
end
set_temperatures( place, places ) click to toggle source
# File lib/place.rb, line 61
def Place.set_temperatures( place, places )
  place_data = Place.verify_and_get_temperatures( place.to_s, places )

  place = ( Place.new( place,
    place_data[ :temperaturamaxima ][0],
    place_data[ :temperaturaminima ][0],
    ( place_data[ :temperaturamaxima ].sum / place_data[ :temperaturamaxima ].length ).round( 2 ),
    ( place_data[ :temperaturaminima ].sum / place_data[ :temperaturaminima ].length ).round( 2 ) ) rescue nil )
end
verify_and_get_temperatures( place, places_list ) click to toggle source
# File lib/place.rb, line 18
def Place.verify_and_get_temperatures( place, places_list )
  place = place.to_sym_city
  city_values = Place.get_array_from_xml( place, places_list ) if places_list.has_key?( place )
  return city_values
end