Class: PrevisaoClimaTempo

Inherits:
Object
  • Object
show all
Defined in:
lib/previsao-clima-tempo.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(option) ⇒ PrevisaoClimaTempo

Returns a new instance of PrevisaoClimaTempo.

Raises:

  • (TypeError)


14
15
16
17
18
19
# File 'lib/previsao-clima-tempo.rb', line 14

def initialize(option)
  raise TypeError unless option.kind_of? Hash
  raise ArgumentError unless option.has_key? :codCity

  @codCity = option[:codCity]
end

Instance Attribute Details

#codCityObject (readonly)

Returns the value of attribute codCity.



12
13
14
# File 'lib/previsao-clima-tempo.rb', line 12

def codCity
  @codCity
end

Instance Method Details

#citiesObject

Devolve uma coleção de hashs com as cidades compreendidas pelo clima tempo

Example:

>> PrevisaoClimaTempo.cities()

Arguments:



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/previsao-clima-tempo.rb', line 118

def cities()
   
   url = "http://servicos.cptec.inpe.br/XML/listaCidades"
   
   cities = Array.new
   
   request ||= request(url)
   
   request.xpath('//cidades/cidade').each do |cidadePath|
  
      cidade = Hash.new
      
      cidade[:id]   = cidadePath.at_xpath('id').text
      cidade[:uf]   = cidadePath.at_xpath('uf').text
      cidade[:nome] = cidadePath.at_xpath('nome').text
      
      cities << cidade
   
   end
   
   cities
   
end

#day(date) ⇒ Object

Devolve a previsão para a data informada, no máximo a data atual + 13 dias

Example:

>> PrevisaoClimaTempo.day("02-03-2012".to_date)

Arguments:

date: (Date)


32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/previsao-clima-tempo.rb', line 32

def day(date)
  
  days = self.days(14)
  
  day = Object
  
  days.each do |dayEach|
    break day = dayEach if dayEach.dia == date.strftime("%d-%m-%Y")   
  end
  
  day
   
end

#days(qtdDays) ⇒ Object

Devolve uma coleção de objetos, no máximo a data atual + 13 dias

Example:

>> PrevisaoClimaTempo.days(4)

Arguments:

qtdDays: (Integer)


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/previsao-clima-tempo.rb', line 56

def days(qtdDays)
  
  days = Array.new

   urlPadrao    = "http://servicos.cptec.inpe.br/XML/cidade/7dias/#{@codCity}/previsao.xml"
   
   urlEstendida = "http://servicos.cptec.inpe.br/XML/cidade/#{@codCity}/estendida.xml"
   
   loadDays(urlPadrao,days,qtdDays)
   
   if(qtdDays > 4)
     
     loadDays(urlEstendida,days,qtdDays)
     
   end
   
   days
   
end

#nowObject

Devolve um objeto com as condiões do tempo do dia atual

Example:

>> PrevisaoClimaTempo.now()

Arguments:



102
103
104
105
106
# File 'lib/previsao-clima-tempo.rb', line 102

def now()
   
   self.day(Time.now)
   
end

#tomorrowObject

Devolve um objeto com as condiões do tempo do dia seguinte

Example:

>> PrevisaoClimaTempo.tomorrow()

Arguments:



86
87
88
89
90
# File 'lib/previsao-clima-tempo.rb', line 86

def tomorrow()
   
   self.day(Time.now + 1.days)
   
end