quakelive_api 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +21 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +76 -0
- data/Rakefile +14 -0
- data/lib/quakelive_api/base.rb +52 -0
- data/lib/quakelive_api/error/player_not_found.rb +6 -0
- data/lib/quakelive_api/error/request_error.rb +6 -0
- data/lib/quakelive_api/game_time.rb +34 -0
- data/lib/quakelive_api/items/award.rb +7 -0
- data/lib/quakelive_api/items/competitor.rb +7 -0
- data/lib/quakelive_api/items/favourite.rb +7 -0
- data/lib/quakelive_api/items/model.rb +7 -0
- data/lib/quakelive_api/items/recent_game.rb +7 -0
- data/lib/quakelive_api/items/record.rb +7 -0
- data/lib/quakelive_api/items/structurable.rb +13 -0
- data/lib/quakelive_api/items/weapon.rb +7 -0
- data/lib/quakelive_api/parser/awards.rb +50 -0
- data/lib/quakelive_api/parser/base.rb +33 -0
- data/lib/quakelive_api/parser/statistics.rb +81 -0
- data/lib/quakelive_api/parser/summary.rb +174 -0
- data/lib/quakelive_api/profile/awards/base.rb +24 -0
- data/lib/quakelive_api/profile/awards/career_milestones.rb +14 -0
- data/lib/quakelive_api/profile/awards/experience.rb +14 -0
- data/lib/quakelive_api/profile/awards/mad_skillz.rb +14 -0
- data/lib/quakelive_api/profile/awards/social_life.rb +15 -0
- data/lib/quakelive_api/profile/awards/sweet_success.rb +14 -0
- data/lib/quakelive_api/profile/statistics.rb +18 -0
- data/lib/quakelive_api/profile/summary.rb +35 -0
- data/lib/quakelive_api/profile.rb +43 -0
- data/lib/quakelive_api/version.rb +3 -0
- data/lib/quakelive_api.rb +38 -0
- data/quakelive_api.gemspec +28 -0
- data/test/fixtures/awards/career.txt +382 -0
- data/test/fixtures/awards/experience.txt +769 -0
- data/test/fixtures/awards/mad_skillz.txt +915 -0
- data/test/fixtures/awards/social_life.txt +155 -0
- data/test/fixtures/awards/sweet_success.txt +684 -0
- data/test/fixtures/profile/error.txt +24 -0
- data/test/fixtures/profile/not_found.txt +36 -0
- data/test/fixtures/profile/summary.txt +383 -0
- data/test/fixtures/statistics/emqz.txt +431 -0
- data/test/fixtures/statistics/xsi.txt +558 -0
- data/test/fixtures/summary/emqz.txt +304 -0
- data/test/fixtures/summary/mariano.txt +380 -0
- data/test/quakelive_api/game_time_test.rb +51 -0
- data/test/quakelive_api/profile/awards/career_milestones_test.rb +38 -0
- data/test/quakelive_api/profile/awards/experience_test.rb +38 -0
- data/test/quakelive_api/profile/awards/mad_skillz_test.rb +38 -0
- data/test/quakelive_api/profile/awards/social_life_test.rb +38 -0
- data/test/quakelive_api/profile/awards/sweet_success_test.rb +38 -0
- data/test/quakelive_api/profile/statistics_test.rb +75 -0
- data/test/quakelive_api/profile/summary_test.rb +97 -0
- data/test/quakelive_api/profile_test.rb +67 -0
- data/test/test_helper.rb +47 -0
- metadata +220 -0
@@ -0,0 +1,380 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/0.7.67
|
3
|
+
Date: Wed, 31 Jul 2013 07:04:08 GMT
|
4
|
+
Content-Type: text/html
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: close
|
7
|
+
X-Powered-By: PHP/5.3.3
|
8
|
+
X-QL-IDENT: 0 standard
|
9
|
+
|
10
|
+
<div id='qlv_profile_shared_container' style="text-align: left">
|
11
|
+
<div style="display: none" id="prf_player_name">Mariano</div>
|
12
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_player_2_v2013071600.0.png" style="margin-top: 10px; margin-bottom: 8px" width="214" height="29" />
|
13
|
+
<div class="prf_header">
|
14
|
+
<div class="playername player_nick_light"><img src="http://cdn.quakelive.com/web/2013071600/images/flags/pl_v2013071600.0.gif" class="playerflag" title="Poland" />Mariano</div>
|
15
|
+
|
16
|
+
<div class="nav">
|
17
|
+
<a href="#!profile/summary/Mariano" class="selected">Summary</a>
|
18
|
+
<span>|</span>
|
19
|
+
<a href="#!profile/statistics/Mariano" >Statistics</a>
|
20
|
+
<span>|</span>
|
21
|
+
<a href="#!profile/arenas/Mariano" >Arenas</a>
|
22
|
+
<span>|</span>
|
23
|
+
<a href="#!profile/awards/Mariano" >Awards</a>
|
24
|
+
<span>|</span>
|
25
|
+
<a href="#!profile/friends/Mariano" >Friends</a>
|
26
|
+
<span>|</span>
|
27
|
+
<a href="#!profile/competitors/Mariano" >Competitors</a>
|
28
|
+
<span>|</span>
|
29
|
+
<a href="#!profile/matches/Mariano" >Matches</a>
|
30
|
+
<div class="cl"></div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<form onsubmit="quakelive.mod_profile.ProfileJumpClick(); return false" style="margin: 0; padding: 0">
|
34
|
+
<div id="jump_player_msg"></div>
|
35
|
+
<div class="prf_section_searchbar">
|
36
|
+
<input type="text" value="Jump to profile…" onfocus="quakelive.mod_profile.FocusProfileJump(this)" onblur="quakelive.mod_profile.BlurProfileJump(this)" class="input_default" id="profile_jump_input" />
|
37
|
+
<a href="javascript:;" onclick="quakelive.mod_profile.ProfileJumpClick(); return false"><img src="http://cdn.quakelive.com/web/2013071600/images/sf/leaderboard/search_v2013071600.0.png" width="23" height="23" /></a>
|
38
|
+
</div>
|
39
|
+
</form>
|
40
|
+
|
41
|
+
<div class="cl"></div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div id="qlv_profileContainer">
|
45
|
+
<div id="qlv_profileTopLeft" class="summary premium_status_2">
|
46
|
+
<div class="prf_imagery">
|
47
|
+
<div style="width: 160px; height: 275px; background: url(http://cdn.quakelive.com/web/2013071600/images/players/body_md/bitterman_default_v2013071600.0.png) no-repeat center top" title="Bitterman / Default"></div>
|
48
|
+
<br />
|
49
|
+
<!--
|
50
|
+
<div style="margin-left: 15px; width: 140px; text-align: center; color: #cc3300; font-size: 17px; font-weight: bold; font-family: Arial">
|
51
|
+
Bitterman
|
52
|
+
</div>
|
53
|
+
-->
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="prf_vitals">
|
57
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_vitalstats_v2013071600.0.png" alt="Vital Stats" width="108" height="13" class="prf_title" />
|
58
|
+
<br />
|
59
|
+
|
60
|
+
<p>
|
61
|
+
<b>Member Since:</b> Feb. 07, 2009<br />
|
62
|
+
<b>Time Played:</b> <span class="text_tooltip" title="Ranked Time: 52.19:25:52 Unranked Time: 02:31:02">1.8 months</span><br />
|
63
|
+
|
64
|
+
<b>Last Game:</b>
|
65
|
+
<span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
66
|
+
<br />
|
67
|
+
<b>Wins:</b> 4,278<br />
|
68
|
+
<b>Losses / Quits:</b> 3,015 / 518<br />
|
69
|
+
<b>Frags / Deaths:</b> 97,102 / 88,381<br />
|
70
|
+
<b>Hits / Shots:</b> 1,960,767 / 6,085,608<br />
|
71
|
+
<b>Accuracy:</b> 32.22%<br />
|
72
|
+
|
73
|
+
</p>
|
74
|
+
|
75
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_favorites_v2013071600.0.png" width="93" height="13" alt="Favorites" class="prf_title" />
|
76
|
+
<br />
|
77
|
+
|
78
|
+
<p class="prf_faves">
|
79
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/none_v2013071600.0.gif" width="17" height="17" alt="" class="fl fivepxhr" />
|
80
|
+
<b>Arena:</b> Furious Heights
|
81
|
+
<div class="cl"></div>
|
82
|
+
</p>
|
83
|
+
|
84
|
+
<p class="fivepxv prf_faves">
|
85
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/gametypes/xsm/duel_v2013071600.0.png" width="16" height="16" alt="" class="fl fivepxhr" />
|
86
|
+
<b>Game Type:</b> Duel
|
87
|
+
|
88
|
+
<div class="cl"></div>
|
89
|
+
</p>
|
90
|
+
|
91
|
+
<p class="fivepxv prf_faves">
|
92
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/weapons/sm/LIGHTNING_v2013071600.0.gif" width="17" height="17" alt="" class="fl fivepxhr" />
|
93
|
+
<b>Weapon:</b> Lightning Gun
|
94
|
+
<div class="cl"></div>
|
95
|
+
</p>
|
96
|
+
</div>
|
97
|
+
|
98
|
+
<div class="cl"></div>
|
99
|
+
|
100
|
+
<div class="prf_bio">
|
101
|
+
<span class="prf_quote_left">“</span>
|
102
|
+
<p>http://quake.net.pl
|
103
|
+
Classic stuff: Wheel Mouse Optical 1.1a USB 500Hz + Mouse Accel - SteelSeries QCK - Samsung SyncMaster 957 FS 120Hz CRT</p>
|
104
|
+
<span class="prf_quote_right">”</span>
|
105
|
+
</div>
|
106
|
+
<div id="prf_friend_like">
|
107
|
+
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.quakelive.com/r/profile/summary/mariano" data-text="Check out Mariano's QUAKE LIVE Profile!" data-count="none" data-via="quakelive">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
|
108
|
+
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.quakelive.com%2Fr%2Fprofile%2Fsummary%2Fmariano&layout=button_count&show_faces=false&width=140&action=like&colorscheme=light&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:140px; height:21px;" allowTransparency="true"></iframe>
|
109
|
+
</div>
|
110
|
+
<div id="prf_friend_controls">
|
111
|
+
</div>
|
112
|
+
</div>
|
113
|
+
|
114
|
+
<div id="qlv_profileTopRight" class="summary">
|
115
|
+
<div id="qlv_summaryAwardBkd">
|
116
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_recentawards_v2013071600.0.png" alt="Recent Medals" width="147" height="13" class="prf_title" />
|
117
|
+
<br />
|
118
|
+
|
119
|
+
<!--<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_viewmore_v2013071600.0.png" width="80" height="8" class="prf_viewmore" />-->
|
120
|
+
|
121
|
+
<div class="prf_awards">
|
122
|
+
<div title="Hope you touched the flag first!" class="awd_details prf_row_height interactive prf_row1" onclick="quakelive.Goto('profile/awards/Mariano;type=2;award=281'); return false">
|
123
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/awards/md/team_killer_v2013071600.0.png" width="61" height="61" class="prf_award" />
|
124
|
+
<div class="vcenter_outer prf_row_height">
|
125
|
+
<div class="vcenter_inner">
|
126
|
+
<div class="vcenter_data">
|
127
|
+
<b class="awd_title">Team Killer</b><br />
|
128
|
+
Awarded 2 months ago<br />
|
129
|
+
Kill all players on the opposing team in a single round in Attack & Defend, minimum size 3.
|
130
|
+
<div class="cl"></div>
|
131
|
+
</div>
|
132
|
+
</div>
|
133
|
+
</div>
|
134
|
+
</div>
|
135
|
+
<div title="Bittersweet victory." class="awd_details prf_row_height interactive prf_row2" onclick="quakelive.Goto('profile/awards/Mariano;type=2;award=279'); return false">
|
136
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/awards/md/missed_opportunity_v2013071600.0.png" width="61" height="61" class="prf_award" />
|
137
|
+
<div class="vcenter_outer prf_row_height">
|
138
|
+
<div class="vcenter_inner">
|
139
|
+
<div class="vcenter_data">
|
140
|
+
<b class="awd_title">Missed Opportunity</b><br />
|
141
|
+
Awarded 2 months ago<br />
|
142
|
+
Kill the opposing team in Attack & Defend without touching the flag.
|
143
|
+
<div class="cl"></div>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
</div>
|
148
|
+
<div title="Do you think thats air youre breathing now?" class="awd_details prf_row_height interactive prf_row1" onclick="quakelive.Goto('profile/awards/Mariano;type=1;award=339'); return false">
|
149
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/awards/md/pql_1_v2013071600.0.png" width="61" height="61" class="prf_award" />
|
150
|
+
<div class="vcenter_outer prf_row_height">
|
151
|
+
<div class="vcenter_inner">
|
152
|
+
<div class="vcenter_data">
|
153
|
+
<b class="awd_title">Too Fast</b><br />
|
154
|
+
Awarded 2 months ago<br />
|
155
|
+
Complete 1 online PQL match.
|
156
|
+
<div class="cl"></div>
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
</div>
|
160
|
+
</div>
|
161
|
+
<div title="Denial: Not just a river in Egypt." class="awd_details prf_row_height interactive prf_row2" onclick="quakelive.Goto('profile/awards/Mariano;type=4;award=285'); return false">
|
162
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/awards/md/territory_defender_v2013071600.0.png" width="61" height="61" class="prf_award" />
|
163
|
+
<div class="vcenter_outer prf_row_height">
|
164
|
+
<div class="vcenter_inner">
|
165
|
+
<div class="vcenter_data">
|
166
|
+
<b class="awd_title">Territory Defender</b><br />
|
167
|
+
Awarded 2 months ago<br />
|
168
|
+
Score at least 10 defends in one Domination match.
|
169
|
+
<div class="cl"></div>
|
170
|
+
</div>
|
171
|
+
</div>
|
172
|
+
</div>
|
173
|
+
</div>
|
174
|
+
<div title="You are officially a QUAKE LIVE VIP." class="awd_details prf_row_height interactive prf_row1" onclick="quakelive.Goto('profile/awards/Mariano;type=1;award=20'); return false">
|
175
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/awards/md/worldclass_v2013071600.0.png" width="61" height="61" class="prf_award" />
|
176
|
+
<div class="vcenter_outer prf_row_height">
|
177
|
+
<div class="vcenter_inner">
|
178
|
+
<div class="vcenter_data">
|
179
|
+
<b class="awd_title">World-Class</b><br />
|
180
|
+
Awarded 5 months ago<br />
|
181
|
+
Accumulate 1000 hours of time played.
|
182
|
+
<div class="cl"></div>
|
183
|
+
</div>
|
184
|
+
</div>
|
185
|
+
</div>
|
186
|
+
</div>
|
187
|
+
</div>
|
188
|
+
</div>
|
189
|
+
</div>
|
190
|
+
|
191
|
+
<div class="cl"></div>
|
192
|
+
|
193
|
+
<div id="qlv_profileMiddle" class="summary">
|
194
|
+
<div id="qlv_profileMiddleContent">
|
195
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_recentmatches_v2013071600.0.png" class="prf_title" style="float: left" />
|
196
|
+
<!--<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_viewmore_v2013071600.0.png" alt="Recent Matches" width="80" height="8" style="float: right; margin-top: 4px" />-->
|
197
|
+
<br />
|
198
|
+
<hr class="cl" style="height: 1px" />
|
199
|
+
|
200
|
+
<div style="text-align: center; width: 637px">
|
201
|
+
<div style="width: 33%; text-align: center; float: left" class="prf_map recent_match interactive" id="tdm_6488c8e4-ea64-11e2-9160-00259031fd90_1">
|
202
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/levelshots/lg/hiddenfortress_v2013071600.0.jpg" width="171" height="124" class="levelshot" />
|
203
|
+
<div class="gameframe">
|
204
|
+
|
205
|
+
<img class="gametype" src="http://cdn.quakelive.com/web/2013071600/images/gametypes/sm/tdm_v2013071600.0.png" width="28" height="28" title="Game Type" />
|
206
|
+
<span class="finish">
|
207
|
+
Finish:
|
208
|
+
Loss
|
209
|
+
</span>
|
210
|
+
<span class="played">Played: 20 days ago</span>
|
211
|
+
</div>
|
212
|
+
</div>
|
213
|
+
<div style="width: 33%; text-align: center; float: left" class="prf_map recent_match interactive" id="tdm_43ff4cd2-ea60-11e2-9160-00259031fd90_1">
|
214
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/levelshots/lg/purgatory_v2013071600.0.jpg" width="171" height="124" class="levelshot" />
|
215
|
+
<div class="gameframe">
|
216
|
+
|
217
|
+
<img class="gametype" src="http://cdn.quakelive.com/web/2013071600/images/gametypes/sm/tdm_v2013071600.0.png" width="28" height="28" title="Game Type" />
|
218
|
+
<span class="finish">
|
219
|
+
Finish:
|
220
|
+
Loss
|
221
|
+
</span>
|
222
|
+
<span class="played">Played: 20 days ago</span>
|
223
|
+
</div>
|
224
|
+
</div>
|
225
|
+
<div style="width: 33%; text-align: center; float: left" class="prf_map recent_match interactive" id="tdm_4bfa181a-ea59-11e2-9160-00259031fd90_1">
|
226
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/levelshots/lg/hiddenfortress_v2013071600.0.jpg" width="171" height="124" class="levelshot" />
|
227
|
+
<div class="gameframe">
|
228
|
+
<div class="profile_won_icon"></div>
|
229
|
+
|
230
|
+
<img class="gametype" src="http://cdn.quakelive.com/web/2013071600/images/gametypes/sm/tdm_v2013071600.0.png" width="28" height="28" title="Game Type" />
|
231
|
+
<span class="finish">
|
232
|
+
Finish:
|
233
|
+
Win
|
234
|
+
</span>
|
235
|
+
<span class="played">Played: 20 days ago</span>
|
236
|
+
</div>
|
237
|
+
</div>
|
238
|
+
<div class="cl"></div>
|
239
|
+
</div>
|
240
|
+
</div>
|
241
|
+
</div>
|
242
|
+
</div>
|
243
|
+
|
244
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/profile_bot_divider_v2013071600.0.gif" width="670" height="17" />
|
245
|
+
|
246
|
+
<div id="qlv_profileBottom" class="qlv_profile_section_summary">
|
247
|
+
<div id="qlv_profileBottomContent">
|
248
|
+
<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_recentcompetitors_v2013071600.0.png" class="prf_title fl" style="position: relative; left: 2px" />
|
249
|
+
<!--<img src="http://cdn.quakelive.com/web/2013071600/images/profile/titles/ttl_viewmore_v2013071600.0.png" alt="Recent Competitors" style="float: right; margin-top: 4px; margin-right: 15px" />-->
|
250
|
+
<br />
|
251
|
+
|
252
|
+
<div id="qlv_profileBottomInset" style="text-align: center">
|
253
|
+
<div style="margin: 0 auto; width: 640px; padding-top: 10px">
|
254
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/Jeezy'); return false">
|
255
|
+
<div class="fl" style="margin-right: 5px">
|
256
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/bitterman_red_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
257
|
+
</div>
|
258
|
+
<div style="margin-top: 6px">
|
259
|
+
<a href="#!profile/summary/Jeezy" class="player_nick_dark">Jeezy</a>
|
260
|
+
<br />
|
261
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
262
|
+
</div>
|
263
|
+
</div>
|
264
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/akilkenny'); return false">
|
265
|
+
<div class="fl" style="margin-right: 5px">
|
266
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/ranger_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
267
|
+
</div>
|
268
|
+
<div style="margin-top: 6px">
|
269
|
+
<a href="#!profile/summary/akilkenny" class="player_nick_dark"><span class="clan">nvc</span>akilkenny</a>
|
270
|
+
<br />
|
271
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
272
|
+
</div>
|
273
|
+
</div>
|
274
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/Eteto'); return false">
|
275
|
+
<div class="fl" style="margin-right: 5px">
|
276
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/sarge_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
277
|
+
</div>
|
278
|
+
<div style="margin-top: 6px">
|
279
|
+
<a href="#!profile/summary/Eteto" class="player_nick_dark">Eteto</a>
|
280
|
+
<br />
|
281
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
282
|
+
</div>
|
283
|
+
</div>
|
284
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/killkiss'); return false">
|
285
|
+
<div class="fl" style="margin-right: 5px">
|
286
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/xaero_red_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
287
|
+
</div>
|
288
|
+
<div style="margin-top: 6px">
|
289
|
+
<a href="#!profile/summary/killkiss" class="player_nick_dark"><span class="clan">[KO]</span>killkiss</a>
|
290
|
+
<br />
|
291
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
292
|
+
</div>
|
293
|
+
</div>
|
294
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/crAck_'); return false">
|
295
|
+
<div class="fl" style="margin-right: 5px">
|
296
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/bitterman_red_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
297
|
+
</div>
|
298
|
+
<div style="margin-top: 6px">
|
299
|
+
<a href="#!profile/summary/crAck_" class="player_nick_dark"><span class="clan">/hyk/</span>crAck_</a>
|
300
|
+
<br />
|
301
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
302
|
+
</div>
|
303
|
+
</div>
|
304
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/uber9petska'); return false">
|
305
|
+
<div class="fl" style="margin-right: 5px">
|
306
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/xaero_blue_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
307
|
+
</div>
|
308
|
+
<div style="margin-top: 6px">
|
309
|
+
<a href="#!profile/summary/uber9petska" class="player_nick_dark"><span class="clan">planB</span>uber9petska</a>
|
310
|
+
<br />
|
311
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
312
|
+
</div>
|
313
|
+
</div>
|
314
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/ParaNoiiA'); return false">
|
315
|
+
<div class="fl" style="margin-right: 5px">
|
316
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/sarge_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
317
|
+
</div>
|
318
|
+
<div style="margin-top: 6px">
|
319
|
+
<a href="#!profile/summary/ParaNoiiA" class="player_nick_dark"><span class="clan">8450</span>ParaNoiiA</a>
|
320
|
+
<br />
|
321
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:59 PM">20 days ago</span>
|
322
|
+
</div>
|
323
|
+
</div>
|
324
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/Centinela'); return false">
|
325
|
+
<div class="fl" style="margin-right: 5px">
|
326
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/razor_id_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
327
|
+
</div>
|
328
|
+
<div style="margin-top: 6px">
|
329
|
+
<a href="#!profile/summary/Centinela" class="player_nick_dark"><span class="clan">2E</span>Centinela</a>
|
330
|
+
<br />
|
331
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:29 PM">20 days ago</span>
|
332
|
+
</div>
|
333
|
+
</div>
|
334
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/MaskoPatol'); return false">
|
335
|
+
<div class="fl" style="margin-right: 5px">
|
336
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/uriel_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
337
|
+
</div>
|
338
|
+
<div style="margin-top: 6px">
|
339
|
+
<a href="#!profile/summary/MaskoPatol" class="player_nick_dark"><span class="clan">vNm</span>MaskoPatol</a>
|
340
|
+
<br />
|
341
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 2:29 PM">20 days ago</span>
|
342
|
+
</div>
|
343
|
+
</div>
|
344
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/dsdl'); return false">
|
345
|
+
<div class="fl" style="margin-right: 5px">
|
346
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/sarge_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
347
|
+
</div>
|
348
|
+
<div style="margin-top: 6px">
|
349
|
+
<a href="#!profile/summary/dsdl" class="player_nick_dark"><span class="clan">wzj-</span>dsdl</a>
|
350
|
+
<br />
|
351
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 1:40 PM">20 days ago</span>
|
352
|
+
</div>
|
353
|
+
</div>
|
354
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/Realf1re'); return false">
|
355
|
+
<div class="fl" style="margin-right: 5px">
|
356
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/razor_default_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
357
|
+
</div>
|
358
|
+
<div style="margin-top: 6px">
|
359
|
+
<a href="#!profile/summary/Realf1re" class="player_nick_dark"><span class="clan">[FU]</span>Realf1re</a>
|
360
|
+
<br />
|
361
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 1:40 PM">20 days ago</span>
|
362
|
+
</div>
|
363
|
+
</div>
|
364
|
+
<div class="rcmp_block interactive" onclick="quakelive.Goto('profile/summary/dashinaction'); return false">
|
365
|
+
<div class="fl" style="margin-right: 5px">
|
366
|
+
<div class="usericon_standard_lg " style="background-image: url(http://cdn.quakelive.com/web/2013071600/images/players/icon_lg/bitterman_blue_v2013071600.0.png)"><div class="frame"></div><label></label></div>
|
367
|
+
</div>
|
368
|
+
<div style="margin-top: 6px">
|
369
|
+
<a href="#!profile/summary/dashinaction" class="player_nick_dark"><span class="clan">aCt.</span>dashinaction</a>
|
370
|
+
<br />
|
371
|
+
<b>Last Played:</b> <span class="text_tooltip" title="07/11/2013 1:40 PM">20 days ago</span>
|
372
|
+
</div>
|
373
|
+
</div>
|
374
|
+
<div class="cl"></div>
|
375
|
+
</div>
|
376
|
+
</div>
|
377
|
+
</div>
|
378
|
+
</div>
|
379
|
+
|
380
|
+
</div>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "Game time conversion" do
|
4
|
+
|
5
|
+
before { @game_time = QuakeliveApi::GameTime.new(string) }
|
6
|
+
|
7
|
+
describe "parses periods without days" do
|
8
|
+
let(:string) { "Ranked Time: 21:50 Unranked Time: 04:54" }
|
9
|
+
|
10
|
+
describe "ranked time" do
|
11
|
+
subject { @game_time.ranked }
|
12
|
+
|
13
|
+
its(:days) { must_equal 0 }
|
14
|
+
its(:hours) { must_equal 0 }
|
15
|
+
its(:minutes) { must_equal 21 }
|
16
|
+
its(:seconds) { must_equal 50 }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "unranked time" do
|
20
|
+
subject { @game_time.unranked }
|
21
|
+
|
22
|
+
its(:days) { must_equal 0 }
|
23
|
+
its(:hours) { must_equal 0 }
|
24
|
+
its(:minutes) { must_equal 4 }
|
25
|
+
its(:seconds) { must_equal 54 }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "parses periods with days" do
|
30
|
+
let(:string) { "Ranked Time: 50.06:18:30 Unranked Time: 02:31:02" }
|
31
|
+
|
32
|
+
describe "ranked time" do
|
33
|
+
subject { @game_time.ranked }
|
34
|
+
|
35
|
+
its(:days) { must_equal 50 }
|
36
|
+
its(:hours) { must_equal 6 }
|
37
|
+
its(:minutes) { must_equal 18 }
|
38
|
+
its(:seconds) { must_equal 30 }
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "unranked time" do
|
42
|
+
subject { @game_time.unranked }
|
43
|
+
|
44
|
+
its(:days) { must_equal 0 }
|
45
|
+
its(:hours) { must_equal 2 }
|
46
|
+
its(:minutes) { must_equal 31 }
|
47
|
+
its(:seconds) { must_equal 02 }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "QuakeliveApi::Profile::Awards::CareerMilestones" do
|
4
|
+
make_my_diffs_pretty!
|
5
|
+
|
6
|
+
before do
|
7
|
+
profile = "dummy"
|
8
|
+
content = fixture_awards('career')
|
9
|
+
stub_request(:get, "#{QuakeliveApi.site}/profile/awards/#{profile}/3").to_return(content)
|
10
|
+
@awards = QuakeliveApi::Profile::Awards::CareerMilestones.new(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "earned" do
|
14
|
+
subject { @awards.earned }
|
15
|
+
|
16
|
+
its(:size){ must_equal 8 }
|
17
|
+
it { subject.must_be_instance_of Array }
|
18
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
19
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/guardian_v2013071600.0.png',
|
20
|
+
'All you need now is an ear-piece, black suit and shades.',
|
21
|
+
'Guardian',
|
22
|
+
Date.parse('09-07-2009'),
|
23
|
+
'Accumulate 100 Capture the Flag Defend Medals.') }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "unearned" do
|
27
|
+
subject { @awards.unearned }
|
28
|
+
|
29
|
+
its(:size){ must_equal 10 }
|
30
|
+
it { subject.must_be_instance_of Array }
|
31
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
32
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/mvp_v2013071600.0.png',
|
33
|
+
nil,
|
34
|
+
'MVP',
|
35
|
+
nil,
|
36
|
+
'Accumulate 1000 total Capture the Flag Medals (Caps, Def, and Asst combined).') }
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "QuakeliveApi::Profile::Awards::Experience" do
|
4
|
+
make_my_diffs_pretty!
|
5
|
+
|
6
|
+
before do
|
7
|
+
profile = "dummy"
|
8
|
+
content = fixture_awards('experience')
|
9
|
+
stub_request(:get, "#{QuakeliveApi.site}/profile/awards/#{profile}/1").to_return(content)
|
10
|
+
@awards = QuakeliveApi::Profile::Awards::Experience.new(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "earned" do
|
14
|
+
subject { @awards.earned }
|
15
|
+
|
16
|
+
its(:size){ must_equal 11 }
|
17
|
+
it { subject.must_be_instance_of Array }
|
18
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
19
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/space_cadet_v2013071600.0.png',
|
20
|
+
'Unfortunately, we don\'t offer frequent flyer miles.',
|
21
|
+
'Space Cadet',
|
22
|
+
Date.parse('18-12-2012'),
|
23
|
+
'Complete 1 online match (of at least 5 min.) in each space arena.') }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "unearned" do
|
27
|
+
subject { @awards.unearned }
|
28
|
+
|
29
|
+
its(:size){ must_equal 25 }
|
30
|
+
it { subject.must_be_instance_of Array }
|
31
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
32
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/champion_v2013071600.0.png',
|
33
|
+
nil,
|
34
|
+
'Champion',
|
35
|
+
nil,
|
36
|
+
'Complete 10,000 online matches.') }
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "QuakeliveApi::Profile::Awards::MadSkillz" do
|
4
|
+
make_my_diffs_pretty!
|
5
|
+
|
6
|
+
before do
|
7
|
+
profile = "dummy"
|
8
|
+
content = fixture_awards('mad_skillz')
|
9
|
+
stub_request(:get, "#{QuakeliveApi.site}/profile/awards/#{profile}/2").to_return(content)
|
10
|
+
@awards = QuakeliveApi::Profile::Awards::MadSkillz.new(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "earned" do
|
14
|
+
subject { @awards.earned }
|
15
|
+
|
16
|
+
its(:size){ must_equal 21 }
|
17
|
+
it { subject.must_be_instance_of Array }
|
18
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
19
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/psychic_v2013071600.0.png',
|
20
|
+
'You\'re either lucky or good.',
|
21
|
+
'Psychic',
|
22
|
+
Date.parse('16-07-2009'),
|
23
|
+
'Use a rocket to kill an opponent who is in the air.') }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "unearned" do
|
27
|
+
subject { @awards.unearned }
|
28
|
+
|
29
|
+
its(:size){ must_equal 22 }
|
30
|
+
it { subject.must_be_instance_of Array }
|
31
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
32
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/forcing_the_city_gates_v2013071600.0.png',
|
33
|
+
nil,
|
34
|
+
'Forcing the City Gates',
|
35
|
+
nil,
|
36
|
+
'Score at least 5 frags in a round in Red Rover.') }
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "QuakeliveApi::Profile::Awards::SocialLife" do
|
4
|
+
make_my_diffs_pretty!
|
5
|
+
|
6
|
+
before do
|
7
|
+
profile = "dummy"
|
8
|
+
content = fixture_awards('social_life')
|
9
|
+
stub_request(:get, "#{QuakeliveApi.site}/profile/awards/#{profile}/5").to_return(content)
|
10
|
+
@awards = QuakeliveApi::Profile::Awards::SocialLife.new(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "earned" do
|
14
|
+
subject { @awards.earned }
|
15
|
+
|
16
|
+
its(:size){ must_equal 5 }
|
17
|
+
it { subject.must_be_instance_of Array }
|
18
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
19
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/myquakebook_v2013071600.0.png',
|
20
|
+
'We have an opening in marketing for someone like you.',
|
21
|
+
'MyQuakeBook',
|
22
|
+
Date.parse('09-07-2009'),
|
23
|
+
'Invite 25 people who join QUAKE LIVE.') }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "unearned" do
|
27
|
+
subject { @awards.unearned }
|
28
|
+
|
29
|
+
its(:size){ must_equal 2 }
|
30
|
+
it { subject.must_be_instance_of Array }
|
31
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
32
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/qc2009_qc_v2013071600.0.png',
|
33
|
+
nil,
|
34
|
+
'QuakeCon 2009',
|
35
|
+
nil,
|
36
|
+
'Presented to any player who completes a game of QUAKE LIVE at QuakeCon.') }
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe "QuakeliveApi::Profile::Awards::SweetSuccess" do
|
4
|
+
make_my_diffs_pretty!
|
5
|
+
|
6
|
+
before do
|
7
|
+
profile = "dummy"
|
8
|
+
content = fixture_awards('sweet_success')
|
9
|
+
stub_request(:get, "#{QuakeliveApi.site}/profile/awards/#{profile}/4").to_return(content)
|
10
|
+
@awards = QuakeliveApi::Profile::Awards::SweetSuccess.new(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "earned" do
|
14
|
+
subject { @awards.earned }
|
15
|
+
|
16
|
+
its(:size){ must_equal 16 }
|
17
|
+
it { subject.must_be_instance_of Array }
|
18
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
19
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/pack_hunter_v2013071600.0.png',
|
20
|
+
'Skill, control, strategy - you\'ve got it all.',
|
21
|
+
'Pack Hunter',
|
22
|
+
Date.parse('04-03-2013'),
|
23
|
+
'Win 75 Team Deathmatch matches.') }
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "unearned" do
|
27
|
+
subject { @awards.unearned }
|
28
|
+
|
29
|
+
its(:size){ must_equal 16 }
|
30
|
+
it { subject.must_be_instance_of Array }
|
31
|
+
it { subject.must_include QuakeliveApi::Items::Award.new(
|
32
|
+
'http://cdn.quakelive.com/web/2013071600/images/awards/md/shut_out_v2013071600.0.png',
|
33
|
+
nil,
|
34
|
+
'Shut Out',
|
35
|
+
nil,
|
36
|
+
'Win a Clan Arena match (of at least 5 rounds) without losing a round.') }
|
37
|
+
end
|
38
|
+
end
|