quakelive_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +21 -0
  2. data/.travis.yml +9 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +76 -0
  6. data/Rakefile +14 -0
  7. data/lib/quakelive_api/base.rb +52 -0
  8. data/lib/quakelive_api/error/player_not_found.rb +6 -0
  9. data/lib/quakelive_api/error/request_error.rb +6 -0
  10. data/lib/quakelive_api/game_time.rb +34 -0
  11. data/lib/quakelive_api/items/award.rb +7 -0
  12. data/lib/quakelive_api/items/competitor.rb +7 -0
  13. data/lib/quakelive_api/items/favourite.rb +7 -0
  14. data/lib/quakelive_api/items/model.rb +7 -0
  15. data/lib/quakelive_api/items/recent_game.rb +7 -0
  16. data/lib/quakelive_api/items/record.rb +7 -0
  17. data/lib/quakelive_api/items/structurable.rb +13 -0
  18. data/lib/quakelive_api/items/weapon.rb +7 -0
  19. data/lib/quakelive_api/parser/awards.rb +50 -0
  20. data/lib/quakelive_api/parser/base.rb +33 -0
  21. data/lib/quakelive_api/parser/statistics.rb +81 -0
  22. data/lib/quakelive_api/parser/summary.rb +174 -0
  23. data/lib/quakelive_api/profile/awards/base.rb +24 -0
  24. data/lib/quakelive_api/profile/awards/career_milestones.rb +14 -0
  25. data/lib/quakelive_api/profile/awards/experience.rb +14 -0
  26. data/lib/quakelive_api/profile/awards/mad_skillz.rb +14 -0
  27. data/lib/quakelive_api/profile/awards/social_life.rb +15 -0
  28. data/lib/quakelive_api/profile/awards/sweet_success.rb +14 -0
  29. data/lib/quakelive_api/profile/statistics.rb +18 -0
  30. data/lib/quakelive_api/profile/summary.rb +35 -0
  31. data/lib/quakelive_api/profile.rb +43 -0
  32. data/lib/quakelive_api/version.rb +3 -0
  33. data/lib/quakelive_api.rb +38 -0
  34. data/quakelive_api.gemspec +28 -0
  35. data/test/fixtures/awards/career.txt +382 -0
  36. data/test/fixtures/awards/experience.txt +769 -0
  37. data/test/fixtures/awards/mad_skillz.txt +915 -0
  38. data/test/fixtures/awards/social_life.txt +155 -0
  39. data/test/fixtures/awards/sweet_success.txt +684 -0
  40. data/test/fixtures/profile/error.txt +24 -0
  41. data/test/fixtures/profile/not_found.txt +36 -0
  42. data/test/fixtures/profile/summary.txt +383 -0
  43. data/test/fixtures/statistics/emqz.txt +431 -0
  44. data/test/fixtures/statistics/xsi.txt +558 -0
  45. data/test/fixtures/summary/emqz.txt +304 -0
  46. data/test/fixtures/summary/mariano.txt +380 -0
  47. data/test/quakelive_api/game_time_test.rb +51 -0
  48. data/test/quakelive_api/profile/awards/career_milestones_test.rb +38 -0
  49. data/test/quakelive_api/profile/awards/experience_test.rb +38 -0
  50. data/test/quakelive_api/profile/awards/mad_skillz_test.rb +38 -0
  51. data/test/quakelive_api/profile/awards/social_life_test.rb +38 -0
  52. data/test/quakelive_api/profile/awards/sweet_success_test.rb +38 -0
  53. data/test/quakelive_api/profile/statistics_test.rb +75 -0
  54. data/test/quakelive_api/profile/summary_test.rb +97 -0
  55. data/test/quakelive_api/profile_test.rb +67 -0
  56. data/test/test_helper.rb +47 -0
  57. metadata +220 -0
@@ -0,0 +1,75 @@
1
+ require "test_helper"
2
+
3
+ describe "QuakeliveApi::Profile::Statistics" do
4
+ make_my_diffs_pretty!()
5
+
6
+ describe "black box test for" do
7
+ before { stub_stats_request(profile, fixture_statistics(profile)) }
8
+ subject { QuakeliveApi::Profile::Statistics.new(profile) }
9
+
10
+ describe "xsi" do
11
+ let(:profile) { "xsi" }
12
+
13
+ it "fetches proper stats for weapons" do
14
+ [
15
+ ['Gauntlet', 185, nil, nil, nil, 1],
16
+ ['Machinegun', 1232, 29, 64253, 225055, 9],
17
+ ['Shotgun', 2091, 27, 25180, 91693, 9],
18
+ ['Grenade Launcher', 241, 10, 1383, 14163, 3],
19
+ ['Rocket Launcher', 4032, 34, 28182, 83256, 39],
20
+ ['Lightning Gun', 2048, 28, 84326, 304674, 15],
21
+ ['Railgun', 2368, 38, 8339, 21946, 19],
22
+ ['Plasma Gun', 708, 13, 10253, 77655, 5],
23
+ ['BFG', 4, 49, 26, 53, 0],
24
+ ['Chaingun', 37, 21, 1111, 5358, 0],
25
+ ['Nailgun', 18, 13, 466, 3495, 0],
26
+ ['Proximity Mine', 7, 24, 40, 164, 0]
27
+ ].each_with_index do |weapon, index|
28
+ assert_equal subject.weapons[index], QuakeliveApi::Items::Weapon.new(*weapon)
29
+ end
30
+ end
31
+
32
+ it "fetches proper stats for records" do
33
+ [
34
+ ['Clan Arena', 13, 13, 7, 0, 100, 54],
35
+ ['Capture The Flag', 74, 67, 39, 7, 91, 53],
36
+ ['Free For All', 31, 27, 10, 4, 87, 32],
37
+ ['Domination', 16, 16, 11, 0, 100, 69],
38
+ ['Freeze Tag', 1, 0, 0, 1, 0, 0],
39
+ ['Team Deathmatch', 155, 142, 79, 13, 92, 51],
40
+ ['Duel', 532, 503, 210, 29, 95, 39],
41
+ ['Total', 822, 768, 356, 54, 93, 43]
42
+ ].each_with_index do |record, index|
43
+ assert_equal subject.records[index], QuakeliveApi::Items::Record.new(*record)
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "emqz" do
49
+ let(:profile) { "emqz" }
50
+
51
+ it "fetches proper stats for weapons" do
52
+ [
53
+ ['Gauntlet', 0, nil, nil, nil, 0],
54
+ ['Machinegun', 0, 0, 0, 0, 0],
55
+ ['Shotgun', 0, 0, 0, 0, 0],
56
+ ['Grenade Launcher', 0, 0, 0, 0, 0],
57
+ ['Rocket Launcher', 0, 0, 0, 0, 0],
58
+ ['Lightning Gun', 0, 0, 0, 0, 0],
59
+ ['Railgun', 0, 0, 0, 0, 0],
60
+ ['Plasma Gun', 0, 0, 0, 0, 0],
61
+ ['BFG', 0, 0, 0, 0, 0],
62
+ ['Chaingun', 0, 0, 0, 0, 0],
63
+ ['Nailgun', 0, 0, 0, 0, 0],
64
+ ['Proximity Mine', 0, 0, 0, 0, 0]
65
+ ].each_with_index do |weapon, index|
66
+ assert_equal subject.weapons[index], QuakeliveApi::Items::Weapon.new(*weapon)
67
+ end
68
+ end
69
+
70
+ it "fetches proper stats for records" do
71
+ assert_equal subject.records, nil
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,97 @@
1
+ require "test_helper"
2
+
3
+ describe "QuakeliveApi::Profile::Summary" do
4
+ make_my_diffs_pretty!
5
+
6
+ describe "black box test for" do
7
+ before { stub_summary_request(profile, fixture_summary(profile)) }
8
+ subject { QuakeliveApi::Profile::Summary.new(profile) }
9
+
10
+ describe "emqz" do
11
+ let(:profile) { "emqz" }
12
+
13
+ its(:country) { must_equal "Poland" }
14
+ its(:nick) { must_equal "emqz"}
15
+ its(:clan) { must_equal nil }
16
+
17
+ its(:model) { must_equal QuakeliveApi::Items::Model.new(
18
+ "Major / Default",
19
+ "http://cdn.quakelive.com/web/2013071600/images/players/body_md/major_default_v2013071600.0.png") }
20
+
21
+ its(:member_since) { must_equal Date.parse('23.06.2013') }
22
+ its(:last_game) { must_equal nil }
23
+ its(:time_played) { must_equal nil }
24
+ its(:wins) { must_equal 0 }
25
+ its(:losses) { must_equal 0 }
26
+ its(:quits) { must_equal 0 }
27
+ its(:frags) { must_equal 0 }
28
+ its(:deaths) { must_equal 0 }
29
+ its(:hits) { must_equal 0 }
30
+ its(:shots) { must_equal 0 }
31
+ its(:accuracy) { must_equal 0.0 }
32
+ its(:favourite) { must_equal QuakeliveApi::Items::Favourite.new(nil, nil, nil) }
33
+ its(:recent_awards) { must_equal nil }
34
+ its(:recent_games) { must_equal nil }
35
+ its(:recent_competitors) { must_equal nil }
36
+ end
37
+
38
+ describe "mariano" do
39
+ let(:profile){ "mariano" }
40
+
41
+ its(:country) { must_equal "Poland" }
42
+ its(:nick) { must_equal "Mariano"}
43
+ its(:clan) { must_equal nil }
44
+
45
+ its(:model) { must_equal QuakeliveApi::Items::Model.new(
46
+ "Bitterman / Default",
47
+ "http://cdn.quakelive.com/web/2013071600/images/players/body_md/bitterman_default_v2013071600.0.png") }
48
+
49
+ its(:member_since) { must_equal Date.parse('7.02.2009') }
50
+ its(:last_game) { must_equal Time.parse('11-07-2013 2:59 PM') }
51
+ its(:time_played) { must_equal QuakeliveApi::GameTime.new("Ranked Time: 52.19:25:52 Unranked Time: 02:31:02") }
52
+ its(:wins) { must_equal 4278 }
53
+ its(:losses) { must_equal 3015 }
54
+ its(:quits) { must_equal 518 }
55
+ its(:frags) { must_equal 97_102 }
56
+ its(:deaths) { must_equal 88_381 }
57
+ its(:hits) { must_equal 1_960_767 }
58
+ its(:shots) { must_equal 6_085_608 }
59
+ its(:accuracy) { must_equal 32.22 }
60
+ its(:favourite) { must_equal QuakeliveApi::Items::Favourite.new("Furious Heights","Duel","Lightning Gun") }
61
+ its(:recent_awards) { must_include QuakeliveApi::Items::Award.new(
62
+ 'http://cdn.quakelive.com/web/2013071600/images/awards/md/team_killer_v2013071600.0.png',
63
+ 'Hope you touched the flag first!',
64
+ 'Team Killer',
65
+ 'Awarded 2 months ago',
66
+ 'Kill all players on the opposing team in a single round in Attack & Defend, minimum size 3.') }
67
+
68
+ its(:recent_awards) { must_include QuakeliveApi::Items::Award.new(
69
+ 'http://cdn.quakelive.com/web/2013071600/images/awards/md/pql_1_v2013071600.0.png',
70
+ 'Do you think thats air youre breathing now?',
71
+ 'Too Fast',
72
+ 'Awarded 2 months ago',
73
+ 'Complete 1 online PQL match.') }
74
+
75
+ its(:recent_games) { must_be_instance_of Array }
76
+ its(:recent_games) { wont_include nil }
77
+ its(:recent_games) { must_include QuakeliveApi::Items::RecentGame.new(
78
+ 'TDM',
79
+ 'Loss',
80
+ '20 days ago',
81
+ 'http://cdn.quakelive.com/web/2013071600/images/levelshots/lg/hiddenfortress_v2013071600.0.jpg')
82
+ }
83
+
84
+ its(:recent_competitors) { wont_include nil }
85
+ its(:recent_competitors) { must_be_instance_of Array }
86
+ its(:recent_competitors) { must_include QuakeliveApi::Items::Competitor.new(
87
+ 'http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/bitterman_red_v2013071600.0.png',
88
+ 'Jeezy',
89
+ Time.parse('2013-07-11 14:59:00'))}
90
+ end
91
+ end
92
+ end
93
+
94
+
95
+
96
+
97
+
@@ -0,0 +1,67 @@
1
+ require "test_helper"
2
+
3
+ describe "QuakeliveApi::Profile" do
4
+
5
+ describe "on error" do
6
+ it "raises an exception on non existing profiles" do
7
+ stub_summary_request "not-here", fixture_profile("not_found")
8
+ profile = QuakeliveApi::Profile.new('not-here')
9
+ assert_raises(QuakeliveApi::Error::PlayerNotFound) { profile.summary }
10
+ end
11
+
12
+ it "raises an exception on request error response from ql" do
13
+ stub_summary_request "error-profile", fixture_profile("error")
14
+ profile = QuakeliveApi::Profile.new('error-profile')
15
+ assert_raises(QuakeliveApi::Error::RequestError) { profile.summary }
16
+ end
17
+ end
18
+
19
+ describe "on success" do
20
+ it "returns an instance of summary class on 'summary' call" do
21
+ stub_summary_request "all-good", fixture_summary("emqz")
22
+ profile = QuakeliveApi::Profile.new('all-good')
23
+ assert_instance_of QuakeliveApi::Profile::Summary, profile.summary
24
+ end
25
+
26
+ it "returns an instance of statistics class on 'statistics' call" do
27
+ stub_stats_request "stats-test", fixture_statistics("xsi")
28
+ profile = QuakeliveApi::Profile.new('stats-test')
29
+ assert_instance_of QuakeliveApi::Profile::Statistics, profile.statistics
30
+ end
31
+
32
+ it "returns an instance of career milestones class on 'awards_milestones' call" do
33
+ profile = QuakeliveApi::Profile.new('awards-test')
34
+ stub_request(:get, "http://www.quakelive.com/profile/awards/awards-test/3")
35
+ assert_instance_of QuakeliveApi::Profile::Awards::CareerMilestones, profile.awards_milestones
36
+ end
37
+
38
+ it "returns an instance of experience class on 'awards_experience' call" do
39
+ profile = QuakeliveApi::Profile.new('awards-test')
40
+ stub_request(:get, "http://www.quakelive.com/profile/awards/awards-test/1")
41
+ assert_instance_of QuakeliveApi::Profile::Awards::Experience, profile.awards_experience
42
+ end
43
+
44
+ it "returns an instance of mad skillz class on 'awards_skillz' call" do
45
+ profile = QuakeliveApi::Profile.new('awards-test')
46
+ stub_request(:get, "http://www.quakelive.com/profile/awards/awards-test/2")
47
+ assert_instance_of QuakeliveApi::Profile::Awards::MadSkillz, profile.awards_skillz
48
+ end
49
+
50
+ it "returns an instance of social life class on 'awards_social' call" do
51
+ profile = QuakeliveApi::Profile.new('awards-test')
52
+ stub_request(:get, "http://www.quakelive.com/profile/awards/awards-test/5")
53
+ assert_instance_of QuakeliveApi::Profile::Awards::SocialLife, profile.awards_social
54
+ end
55
+
56
+ it "returns an instance of sweet success class on 'awards_success' call" do
57
+ profile = QuakeliveApi::Profile.new('awards-test')
58
+ stub_request(:get, "http://www.quakelive.com/profile/awards/awards-test/4")
59
+ assert_instance_of QuakeliveApi::Profile::Awards::SweetSuccess, profile.awards_success
60
+ end
61
+
62
+ it "responds to each_award" do
63
+ profile = QuakeliveApi::Profile.new('awards-test')
64
+ assert_respond_to(profile, :each_award)
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,47 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+ require "minitest/autorun"
4
+ require "webmock/minitest"
5
+
6
+ require "#{File.dirname(__FILE__)}/../lib/quakelive_api"
7
+
8
+ def fixtures_path
9
+ "#{File.dirname(__FILE__)}/fixtures"
10
+ end
11
+
12
+ def fixture_profile(name)
13
+ File.read "#{fixtures_path}/profile/#{name}.txt"
14
+ end
15
+
16
+ def fixture_summary(name)
17
+ File.read "#{fixtures_path}/summary/#{name}.txt"
18
+ end
19
+
20
+ def fixture_statistics(name)
21
+ File.read "#{fixtures_path}/statistics/#{name}.txt"
22
+ end
23
+
24
+ def fixture_awards(name)
25
+ File.read "#{fixtures_path}/awards/#{name}.txt"
26
+ end
27
+
28
+ def stub_summary_request(profile_name, content)
29
+ stub_request(:get, "#{QuakeliveApi.site}/profile/summary/#{profile_name}").to_return(content)
30
+ end
31
+
32
+ def stub_stats_request(profile_name, content)
33
+ stub_request(:get, "#{QuakeliveApi.site}/profile/statistics/#{profile_name}").to_return(content)
34
+ end
35
+
36
+ # taken from its-minitest gem, as I'm used to rspec syntax (and it's quite convenient for blackbox testing)
37
+ class MiniTest::Spec
38
+ def self.its attribute, &block
39
+ describe "verify subject.#{attribute} for" do
40
+ let(:inner_subject) { subject.send(attribute) }
41
+
42
+ it "verify subject.#{attribute} for" do
43
+ inner_subject.instance_eval &block
44
+ end
45
+ end
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quakelive_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Rafal Wojsznis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '1.5'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '1.5'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.3'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 5.0.0
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 5.0.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: webmock
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.12.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.12.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.8.0.pre
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.8.0.pre
110
+ description: Pseudo API for QuakeLive
111
+ email:
112
+ - rafal.wojsznis@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - .gitignore
118
+ - .travis.yml
119
+ - Gemfile
120
+ - LICENSE.txt
121
+ - README.md
122
+ - Rakefile
123
+ - lib/quakelive_api.rb
124
+ - lib/quakelive_api/base.rb
125
+ - lib/quakelive_api/error/player_not_found.rb
126
+ - lib/quakelive_api/error/request_error.rb
127
+ - lib/quakelive_api/game_time.rb
128
+ - lib/quakelive_api/items/award.rb
129
+ - lib/quakelive_api/items/competitor.rb
130
+ - lib/quakelive_api/items/favourite.rb
131
+ - lib/quakelive_api/items/model.rb
132
+ - lib/quakelive_api/items/recent_game.rb
133
+ - lib/quakelive_api/items/record.rb
134
+ - lib/quakelive_api/items/structurable.rb
135
+ - lib/quakelive_api/items/weapon.rb
136
+ - lib/quakelive_api/parser/awards.rb
137
+ - lib/quakelive_api/parser/base.rb
138
+ - lib/quakelive_api/parser/statistics.rb
139
+ - lib/quakelive_api/parser/summary.rb
140
+ - lib/quakelive_api/profile.rb
141
+ - lib/quakelive_api/profile/awards/base.rb
142
+ - lib/quakelive_api/profile/awards/career_milestones.rb
143
+ - lib/quakelive_api/profile/awards/experience.rb
144
+ - lib/quakelive_api/profile/awards/mad_skillz.rb
145
+ - lib/quakelive_api/profile/awards/social_life.rb
146
+ - lib/quakelive_api/profile/awards/sweet_success.rb
147
+ - lib/quakelive_api/profile/statistics.rb
148
+ - lib/quakelive_api/profile/summary.rb
149
+ - lib/quakelive_api/version.rb
150
+ - quakelive_api.gemspec
151
+ - test/fixtures/awards/career.txt
152
+ - test/fixtures/awards/experience.txt
153
+ - test/fixtures/awards/mad_skillz.txt
154
+ - test/fixtures/awards/social_life.txt
155
+ - test/fixtures/awards/sweet_success.txt
156
+ - test/fixtures/profile/error.txt
157
+ - test/fixtures/profile/not_found.txt
158
+ - test/fixtures/profile/summary.txt
159
+ - test/fixtures/statistics/emqz.txt
160
+ - test/fixtures/statistics/xsi.txt
161
+ - test/fixtures/summary/emqz.txt
162
+ - test/fixtures/summary/mariano.txt
163
+ - test/quakelive_api/game_time_test.rb
164
+ - test/quakelive_api/profile/awards/career_milestones_test.rb
165
+ - test/quakelive_api/profile/awards/experience_test.rb
166
+ - test/quakelive_api/profile/awards/mad_skillz_test.rb
167
+ - test/quakelive_api/profile/awards/social_life_test.rb
168
+ - test/quakelive_api/profile/awards/sweet_success_test.rb
169
+ - test/quakelive_api/profile/statistics_test.rb
170
+ - test/quakelive_api/profile/summary_test.rb
171
+ - test/quakelive_api/profile_test.rb
172
+ - test/test_helper.rb
173
+ homepage: https://github.com/emq/quakelive_api
174
+ licenses:
175
+ - MIT
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ requirements: []
193
+ rubyforge_project:
194
+ rubygems_version: 1.8.25
195
+ signing_key:
196
+ specification_version: 3
197
+ summary: Fetch some basic information from QuakeLive site
198
+ test_files:
199
+ - test/fixtures/awards/career.txt
200
+ - test/fixtures/awards/experience.txt
201
+ - test/fixtures/awards/mad_skillz.txt
202
+ - test/fixtures/awards/social_life.txt
203
+ - test/fixtures/awards/sweet_success.txt
204
+ - test/fixtures/profile/error.txt
205
+ - test/fixtures/profile/not_found.txt
206
+ - test/fixtures/profile/summary.txt
207
+ - test/fixtures/statistics/emqz.txt
208
+ - test/fixtures/statistics/xsi.txt
209
+ - test/fixtures/summary/emqz.txt
210
+ - test/fixtures/summary/mariano.txt
211
+ - test/quakelive_api/game_time_test.rb
212
+ - test/quakelive_api/profile/awards/career_milestones_test.rb
213
+ - test/quakelive_api/profile/awards/experience_test.rb
214
+ - test/quakelive_api/profile/awards/mad_skillz_test.rb
215
+ - test/quakelive_api/profile/awards/social_life_test.rb
216
+ - test/quakelive_api/profile/awards/sweet_success_test.rb
217
+ - test/quakelive_api/profile/statistics_test.rb
218
+ - test/quakelive_api/profile/summary_test.rb
219
+ - test/quakelive_api/profile_test.rb
220
+ - test/test_helper.rb