Sha256: 00d93d59f3fe70ce4f2a247afefaf55883c9b1860b73400926a81ccc4ef2e4c4

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

module IEX
  module Endpoints
    module HistoricalPrices
      def historical_prices(symbol, options = {})
        if options[:range] == 'date'
          raise ArgumentError unless options[:date].present?
          raise ArgumentError unless options[:chartByDay].present?
        end

        options = options.dup
        # Historical prices IEX endpoint expects dates passed in a specific format - YYYYMMDD
        options[:date] = options[:date].strftime('%Y%m%d') if options[:date].is_a?(Date)

        path = "stock/#{symbol}/chart"
        path += "/#{options[:range]}" if options.key?(:range)
        path += "/#{options[:date]}" if options[:range] == 'date'

        # We only want options to include query params at this point, remove :range and :date
        options.delete(:range)
        options.delete(:date)

        (get(path, { token: publishable_token }.merge(options)) || []).map do |data|
          IEX::Resources::HistorialPrices.new(data)
        end
      rescue Faraday::ResourceNotFound => e
        raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
iex-ruby-client-1.5.0 lib/iex/endpoints/historial_prices.rb
iex-ruby-client-1.4.1 lib/iex/endpoints/historial_prices.rb
iex-ruby-client-1.4.0 lib/iex/endpoints/historial_prices.rb