Sha256: a280204d8de52a451c15bdabfa800a9703b8639a66af25079de0a12f82edd4d3

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

require "./lib/mlb_rb/errors"
require "./lib/mlb_rb/client"
require "./lib/mlb_rb/game"

module MlbRb
  class Games
    class << self
      def games_for_date(options)
        date = options[:date]
        raise DateError unless validate_date(date)

        client.get_games_for_date(format_date(date))
      end

      def games_for_date_range(options)
        start_date = options[:start_date]
        end_date = options[:end_date]
        [start_date, end_date].each do |date|
          raise DateError unless validate_date(date)
        end
        client.get_games_for_range(format_date(start_date), format_date(end_date))
      end

      private

      def format_date(date)
        "#{"%02d" % date[:month]}/#{"%02d" % date[:day]}/#{date[:year]}"
      end

      def validate_date(date)
        date.map do |key, value|
          valid_number_for_date(value, key)
        end.all?
      end

      def valid_number_for_date(date_number, type)
        if type == :year
          date_number.between?(1876, Date.today.year)
        elsif type == :month
          date_number.between?(1, 12)
        elsif type == :day
          date_number.between?(1, 31)
        end
      end

      def client
        MlbRb::Client
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mlb_rb-0.0.8 lib/mlb_rb/games.rb
mlb_rb-0.0.7 lib/mlb_rb/games.rb
mlb_rb-0.0.5 lib/mlb_rb/games.rb
mlb_rb-0.0.4 lib/mlb_rb/games.rb