Class: MLB

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/mlb.rb

Class Method Summary collapse

Class Method Details

.teamsObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/mlb.rb', line 9

def self.teams
  format :json
  @query ||= {
    :query => [
      {
        'name' => nil,
        'league' => {
          'name' => nil,
        },
        'division' => {
          'name' => nil,
        },
        'current_manager' => {
          'name' => nil,
        },
        'team_stats' => [{
          'wins' => nil,
          'losses' => nil,
          'season' => nil,
          'limit' => 1,
          'sort' => '-season',
        }],
        'current_roster' => [{
          'player' => nil,
          'position' => nil,
          'number' => nil,
          'sort' => 'player',
        }],
        '/sports/sports_team/founded' => [{
          'value' => nil,
        }],
        '/sports/sports_team/team_mascot' => [{
        }],
        '/sports/sports_team/arena_stadium' => [{
          'name' => nil,
        }],
        '/common/topic/image' => [{
          'id' => nil,
          'timestamp' => nil,
          'sort' => '-timestamp',
          'limit' => 1,
        }],
        'sort' => 'name',
        'type' => '/baseball/baseball_team',
      }
    ]
  }

  @response ||= get('/service/mqlread?', :query => {:query => JSON.unparse(@query)})
  unless @response['code'] == '/api/status/ok'
    errors = Array(@response['messages']).map{|m| m.inspect}.join(', ')
    raise "#{@response['status']}: #{errors} (#{@response['transaction_id']})"
  end
  @results ||= []
  if @results.empty?
    @response['result'].each do |result|
      @results << OpenStruct.new({
        :name     => result['name'],
        :league   => result['league']['name'],
        :division => result['division']['name'],
        :manager  => result['current_manager']['name'],
        :players  => result['current_roster'].map{|player| OpenStruct.new({:name => player['player'], :number => player['number'], :position => player['position'],})},
        :wins     => result['team_stats'].first['wins'].to_i,
        :losses   => result['team_stats'].first['losses'].to_i,
        :founded  => result['/sports/sports_team/founded'].first['value'].to_i,
        :mascot   => (result['/sports/sports_team/team_mascot'].first ? result['/sports/sports_team/team_mascot'].first['name'] : nil),
        :ballpark => result['/sports/sports_team/arena_stadium'].first['name'],
        :logo_url => 'http://img.freebase.com/api/trans/image_thumb' + result['/common/topic/image'].first['id'],
      })
    end
  end
  @results
end