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
|