Sha256: f1497a6cfc8ff21a233f0830b5c8b4db2d10894a7fa94c250755b9afc93ad0b8
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
require "currency_converter/exceptions" require "currency_converter/currencies" require "currency_converter/version" require "net/http" module CurrencyConverter class << self # Returns the Symbol of 'from' currency attr_reader :from_currency # Returns the Symbol of 'to' currency attr_reader :to_currency # Receive the amount of you desire currency. # # @param [String, String, Numeric] other currency to exchange to. # # @return [amount] # # @example # CurrencyConverter.exchange("USD", "EUR", 100) # CurrencyConverter.exchange("USD", "INR", 100) def exchange(from, to, fixnum) @from_currency = from.upcase.to_sym @to_currency = to.upcase.to_sym validate_currency ex_rate = exchange_rate validate_rate(ex_rate) value = "%.2f" % (ex_rate.to_f * fixnum).to_s value.to_f end private # Returns the Float value of rate or nil def exchange_rate http = Net::HTTP.new("www.google.com", 80) url = "/finance/converter?a=1&from=#{from_currency.to_s.upcase}&to=#{to_currency.to_s.upcase}" response = http.get(url) result = response.body regexp = Regexp.new("(\\d+\\.{0,1}\\d*)\\s+#{to_currency}") regexp.match result return $1 rescue Timeout::Error raise StandardError, "Please check your internet connection" end # Raise errors for invalid currencies. def validate_currency raise UnknownCurrency.new(from_currency) unless CurrencyConverter::CURRENCIES.has_key?(from_currency) raise UnknownCurrency.new(to_currency) unless CurrencyConverter::CURRENCIES.has_key?(to_currency) end # Raise errors for missing data. def validate_rate(rate) raise MissingExchangeRate.new(from_currency, to_currency) if rate.to_f.zero? end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
currency_converter-1.0.0 | lib/currency_converter.rb |
currency_converter-0.0.2 | lib/currency_converter.rb |