Sha256: 59456d89c90f1df6fc7785ca23a6c576fdfff4cb606a51466b384c7d16e6125b

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

module IEX
  module Endpoints
    module Chart
      def chart(symbol, range = nil, options = {})
        url = [
          'stock',
          symbol,
          'chart',
          range && range.respond_to?(:strftime) ? "date/#{range.strftime('%Y%m%d')}" : range
        ].compact.join('/')

        params = {}

        options&.each_pair do |k, v|
          k = k.to_s.split('_').map(&:capitalize).join.sub(/^[A-Z]/, &:downcase)
          params[k.to_sym] = v
        end

        response = get(url, params)

        if range && range.to_s == 'dynamic'
          range = response['range']
          response = response['data']
        end
        response.map do |data|
          case range
          when '1d', Date, DateTime
            IEX::Resources::Chart::OneDay.new data
          else
            IEX::Resources::Chart::Default.new data
          end
        end
      rescue Faraday::ResourceNotFound => e
        raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
iex-ruby-client-1.1.0 lib/iex/endpoints/chart.rb