Module: BrCotacao::Moeda
- Defined in:
- lib/brcotacao/moedas.rb
Overview
Esse Modulo possui os metodos que trazem as cotacoes da Classe moeda que incluir Este moulo A classe que incluir este modulo precisa instanciar um objeto em @dados que permita trazer o código da moeda através da chamada @dados.codigo
- Author
-
Bruno Vicenzo
- Licença
-
GPL
Constant Summary collapse
- FONTE_INFORMACAO =
'http://www4.bcb.gov.br/Download/fechamento/'.freeze
- FONTE_INFORMACAO_TEMPO_REAL =
'http://download.finance.yahoo.com/d/quotes.body?'
- POSICAO_CODIGO_MOEDA =
1
- POSICAO_VALOR_COMPRA =
4
- POSICAO_VALOR_VENDA =
5
Instance Method Summary collapse
-
#compra(data_pesquisa) ⇒ Object
Devolve o valor de compra da moeda no fechamento do dia informado.
-
#cotacao(data_pesquisa) ⇒ Object
Devolve o valor de compra e venda em um Hash da moeda no fechamento do dia informado.
-
#cotacao_agora ⇒ Object
Devolve o valor da cotação em tempo real de acordo com o serviço do Yahoo!.
-
#venda(data_pesquisa) ⇒ Object
Devolve o valor de venda da moeda no fechamento do dia informado.
Instance Method Details
#compra(data_pesquisa) ⇒ Object
Devolve o valor de compra da moeda no fechamento do dia informado. Parametros:
-
data_pesquisa
Um objeto que represente a data do dia em que se deseja receber o valor de compra da moeda. Este parametro precisa responder para o metodo strftime
27 28 29 30 31 |
# File 'lib/brcotacao/moedas.rb', line 27 def compra(data_pesquisa) cotacao_encontrada = cotacao(data_pesquisa) cotacao_encontrada.nil? ? nil : cotacao_encontrada[:compra] end |
#cotacao(data_pesquisa) ⇒ Object
Devolve o valor de compra e venda em um Hash da moeda no fechamento do dia informado. Parametros:
-
data_pesquisa
Um objeto que represente a data do dia em que se deseja receber o valor de compra da moeda. Este parametro precisa responder para o metodo strftime
49 50 51 52 53 |
# File 'lib/brcotacao/moedas.rb', line 49 def cotacao(data_pesquisa) cotacoes_moeda = dados_cotacoes(data_pesquisa).detect{|dado| dado.first.eql? self.dados.codigo} cotacoes_moeda.nil? ? nil : {:compra => cotacoes_moeda[1].gsub(',', '.').to_f, :venda => cotacoes_moeda[2].gsub(',', '.').to_f} end |
#cotacao_agora ⇒ Object
Devolve o valor da cotação em tempo real de acordo com o serviço do Yahoo!. É retornado um hash contendo o valor de compra da moeda e a data que foi feita a consulta (dia e horário)
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/brcotacao/moedas.rb', line 57 def cotacao_agora endereco = URI.parse("#{FONTE_INFORMACAO_TEMPO_REAL}s=#{dados.simbolo}BRL=X&f=nl1d1t1") conexao = Net::HTTP.new(endereco.host) resposta = conexao.get("#{endereco.path}?#{endereco.query}") raise BrCotacao::Errors::CotacaoAgoraNaoEncontradaError.new(Time.now) unless resposta.msg.eql? 'OK' cotacao = CSV.parse(resposta.body).first data = Date.strptime(cotacao[2], '%m/%d/%Y').strftime('%Y-%m-%d') {:compra => cotacao[1].to_f, :data => Time.parse("#{data} #{cotacao[3]} -0400")} end |
#venda(data_pesquisa) ⇒ Object
Devolve o valor de venda da moeda no fechamento do dia informado. Parametros:
-
data_pesquisa
Um objeto que represente a data do dia em que se deseja receber o valor de venda da moeda. Este parametro precisa responder para o metodo strftime
38 39 40 41 42 |
# File 'lib/brcotacao/moedas.rb', line 38 def venda(data_pesquisa) cotacao_encontrada = cotacao(data_pesquisa) cotacao_encontrada.nil? ? nil : cotacao_encontrada[:venda] end |