dragongoserver 0.0.4 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,11 @@
1
+ == 0.1.0 2008-04-27
2
+ * 4 enhancements:
3
+ * new option -min/--min-wait in dgs script
4
+ * new option -wn/--with-name in dgs script
5
+ * new method #userinfo
6
+ * new method #gameinfo
7
+ * 1 bug-fix:
8
+ * dependency of 'choice' was missing in the config file
1
9
  == 0.0.4 2008-01-06
2
10
  * 1 enhancement:
3
11
  * on screen display with option -osd/--osd in 'dgs' script
File without changes
@@ -6,6 +6,7 @@ Rakefile
6
6
  bin/dgs
7
7
  config/hoe.rb
8
8
  config/requirements.rb
9
+ examples/example1.rb
9
10
  lib/dragongoserver.rb
10
11
  lib/dragongoserver/dragongoserver.rb
11
12
  lib/dragongoserver/version.rb
data/README.txt CHANGED
@@ -1 +1,44 @@
1
- README
1
+ # some example how you can use this gem within your programs
2
+
3
+ require 'rubygems'
4
+ require 'dragongoserver'
5
+ require 'gorank'
6
+
7
+ dgs = Dgs.new
8
+
9
+ # get own user id at DGS
10
+
11
+ id = dgs.userid
12
+ puts "your user-id: #{id}"
13
+
14
+ # your rank
15
+
16
+ rank = dgs.get_rank
17
+
18
+ puts "your rank:"
19
+ p rank.to_s
20
+
21
+ # your user infos
22
+
23
+ infos = dgs.userinfo(id)
24
+
25
+ puts "your attributes at DGS:"
26
+ p infos
27
+
28
+ # waiting games
29
+
30
+ wg = dgs.waiting_games
31
+
32
+ puts 'waiting games:'
33
+ p wg
34
+
35
+
36
+ # you can get info for every other user
37
+ # user with user id 8000
38
+ user_8000 = dgs.userinfo(8000)
39
+
40
+ puts "user 8000:"
41
+ p user_8000
42
+
43
+ # see also the homepage of this gem for examples to use the
44
+ # command line script 'dgs'
data/Rakefile CHANGED
File without changes
data/bin/dgs CHANGED
@@ -51,17 +51,40 @@ Choice.options do
51
51
  long '--osd'
52
52
  desc 'Show messages as an on-screen-display, "osd_cat" must be installed (see http://www.ignavus.net/software.html for further details)'
53
53
  end
54
+ if false
55
+ short '-p'
56
+ long '--port=PORT'
57
+ desc 'The port to listen on (default 21)'
58
+ cast Integer
59
+ default 21
60
+ end
61
+ option :min_wait do
62
+ short '-min'
63
+ long '--min-wait=MIN'
64
+ desc 'Minimum wait time between checks'
65
+ cast Integer
66
+ default 1
67
+ end
68
+
69
+ option :with_name do
70
+ short '-wn'
71
+ long '--with-name'
72
+ desc 'Show games with name'
73
+ end
74
+
54
75
  end
55
76
 
56
77
  #p Choice.choices
57
78
  opt_waiting = Choice.choices['waiting'] # true/false
58
79
  opt_running = Choice.choices['running'] # true/false
80
+ $opt_with_name = Choice.choices['with_name'] # true/false
59
81
  @opt_osd = Choice.choices['osd'] # true/false
60
82
  opt_waitingloop = Choice.choices['waitingloop'] # true/false
61
83
  if opt_waiting
62
84
  dgs = Dgs.new
63
85
  waiting_games = dgs.waiting_games
64
86
  puts "you have to move in the following games:" if waiting_games.size > 0
87
+ puts "goto: http://www.dragongoserver.net/status.php" if waiting_games.size > 0
65
88
  waiting_games.each { |game_id|
66
89
  puts game_id
67
90
  }
@@ -88,9 +111,21 @@ def plural(n)
88
111
  end
89
112
  end
90
113
 
91
- def neue_zuege?(dgs)
114
+ def new_moves?(dgs)
92
115
  w = dgs.waiting_games
93
- p w
116
+ if $opt_with_name
117
+ print '['
118
+ w.each {|game|
119
+ print "#{game} "
120
+ gi = dgs.gameinfo(game)
121
+ print gi[:white][:name]+' '
122
+ print gi[:black][:name]+','
123
+ puts
124
+ }
125
+ puts ']'
126
+ else
127
+ p w
128
+ end
94
129
  #if dgs.waiting_games.size > 0 # @page.body.include?(NO_GAMES)
95
130
  if w.size > 0 # @page.body.include?(NO_GAMES)
96
131
  true
@@ -100,74 +135,74 @@ def neue_zuege?(dgs)
100
135
  end
101
136
 
102
137
  def dringende_zuege(dgs=nil)
103
- false # TODO:
138
+ false # TODO:
104
139
  end
105
140
 
106
141
  $nur_dringende = false # TODO:
107
- $min_secs = 60*1
142
+ $min_secs = Choice.choices[:min_wait].to_i*60 #60*15
108
143
  $secs = $min_secs
109
144
  $count = 0
110
145
  def osd_output?
111
146
  return @opt_osd
112
147
  end
113
148
 
114
- def puts_x(arg)
115
- puts arg
116
- if osd_output?
117
- $osd.puts(arg)
118
- $osd.flush
119
- end
149
+ def puts_x(arg)
150
+ puts arg
151
+ if osd_output?
152
+ $osd.puts(arg)
153
+ $osd.flush
120
154
  end
155
+ end
121
156
 
122
- def schleife
123
- dgs = Dgs.new
124
- # dgs.login
125
- #page = dgs.page
126
- $dringend = false
127
- changes = false
128
- if $nur_dringende
129
- if dringende_zuege?(dgs)
130
- $dringend = true
131
- changes = true
132
- else
133
- changes = false
134
- end
135
- elsif neue_zuege? dgs
157
+ def schleife
158
+ dgs = Dgs.new
159
+ # dgs.login
160
+ #page = dgs.page
161
+ $dringend = false
162
+ changes = false
163
+ if $nur_dringende
164
+ if dringende_zuege?(dgs)
165
+ $dringend = true
136
166
  changes = true
137
167
  else
138
- # puts "keine neuen Zuege"
139
- puts "no waiting moves"
140
- #
168
+ changes = false
141
169
  end
142
- if changes
143
- $count = 0
144
- # puts "neue Zuege, neue Methode"
145
- puts "waiting games"
146
- $secs = $secs / 2
147
- if $secs < $min_secs
148
- $secs = $min_secs
149
- end
150
- # puts "vermindere Abfrageintervall auf #{$secs} Sekunden(n)"
151
- puts "decreasing request interval to #{$secs} seconds"
152
- # puts "neue Zuege"
153
- puts "waiting games"
154
- if $dringend
155
- $osd.puts("DRINGENDE Spiele")
156
- end
157
- # puts("Deine Mitspieler bei Dragon Go Server warten auf deine Spielzuege")
158
- puts_x("Your opponents at Dragon Go Server are waiting for your moves")
159
- #-- $osd.puts("Deine Mitspieler bei Dragon Go Server warten auf deine Spielzuege")
160
- #-- $osd.flush
161
- else
162
- $count+=1
163
- if $count >= 3
164
- $secs = $secs*2
170
+ elsif new_moves? dgs
171
+ changes = true
172
+ else
173
+ # puts "keine neuen Zuege"
174
+ puts "no waiting moves"
175
+ #
176
+ end
177
+ if changes
178
+ $count = 0
179
+ # puts "neue Zuege, neue Methode"
180
+ puts "waiting games"
181
+ $secs = $secs / 2
182
+ if $secs < $min_secs
183
+ $secs = $min_secs
184
+ end
185
+ # puts "vermindere Abfrageintervall auf #{$secs} Sekunden(n)"
186
+ puts "decreasing request interval to #{$secs} seconds"
187
+ # puts "neue Zuege"
188
+ puts "waiting games"
189
+ if $dringend
190
+ $osd.puts("DRINGENDE Spiele")
191
+ end
192
+ # puts("Deine Mitspieler bei Dragon Go Server warten auf deine Spielzuege")
193
+ puts_x("Your opponents at Dragon Go Server are waiting for your moves")
194
+ #-- $osd.puts("Deine Mitspieler bei Dragon Go Server warten auf deine Spielzuege")
195
+ #-- $osd.flush
196
+ else
197
+ $count+=1
198
+ if $count >= 3
199
+ $secs = $secs*2
165
200
  # puts "erhoehe Abfrageintervall auf #{$secs} Sekunden(n)"
166
201
  puts "increasing request interval to #{$secs} seconds"
167
- $count = 0
168
- end
202
+ $count = 0
169
203
  end
170
204
  end
205
+ end
171
206
  if opt_waitingloop
172
207
  while 1
173
208
  # $osd = IO.popen("osd_cat -p middle -f -adobe-helvetica-*-*-*-*-24-*-*-*- *-*-*-* -s 3 -S lightgray --delay=60","w+")
@@ -176,12 +211,12 @@ if opt_waitingloop
176
211
  end
177
212
  schleife
178
213
  if osd_output?
179
- $osd.close_write
180
- $osd.close
214
+ $osd.close_write
215
+ $osd.close
181
216
  end
182
217
  # puts "warte #{$secs} Sekunden (#{$secs/60} Minuten)"
183
218
  puts "waiting #{$secs} seconds (#{$secs/60} minute#{plural($secs/60)})"
184
219
  sleep($secs)
185
- end
220
+ end
186
221
 
187
222
  end
@@ -62,6 +62,8 @@ hoe = Hoe.new(GEM_NAME, VERS) do |p|
62
62
  p.extra_deps = [
63
63
  ['mechanize', '>= 0.0.1'],
64
64
  ['go-rank', '>= 0.0.1'],
65
+ ['choice', '>= 0.1.2'], # das war meine aktuelle Version, funktioniert vielleich auch mit einer frueheren Version
66
+ ['hpricot', '>= 0.6'], # das war meine aktuelle Version, funktioniert vielleich auch mit einer frueheren Version
65
67
  ] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
66
68
 
67
69
  #p.spec_extras = {} # A hash of extra values to set in the gemspec.
File without changes
@@ -0,0 +1,39 @@
1
+ require 'rubygems'
2
+ require 'dragongoserver'
3
+ require 'gorank'
4
+
5
+ dgs = Dgs.new
6
+
7
+ # get own user id at DGS
8
+
9
+ id = dgs.userid
10
+ puts "your user-id: #{id}"
11
+
12
+ # your rank
13
+
14
+ rank = dgs.get_rank
15
+
16
+ puts "your rank:"
17
+ p rank.to_s
18
+
19
+ # your user infos
20
+
21
+ infos = dgs.userinfo(id)
22
+
23
+ puts "your attributes at DGS:"
24
+ p infos
25
+
26
+ # waiting games
27
+
28
+ wg = dgs.waiting_games
29
+
30
+ puts 'waiting games:'
31
+ p wg
32
+
33
+
34
+ # you can get info for every other user
35
+ # user with user id 8000
36
+ user_8000 = dgs.userinfo(8000)
37
+
38
+ puts "user 8000:"
39
+ p user_8000
File without changes
@@ -1,6 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'mechanize'
3
3
  require 'gorank'
4
+ require 'hpricot'
5
+ #require 'pp'
4
6
 
5
7
  class Dgs
6
8
  LOGGED_IN="Sorry, you have to be logged in to do that"
@@ -9,21 +11,27 @@ class Dgs
9
11
  DGS_INDEX_PAGE = 'http://www.dragongoserver.net/index.php'
10
12
  USER_AGENT_ALIAS = 'Mac Safari' # should work with every browser type
11
13
 
14
+ SAVE_WAIT = 15 # wait n seconds before each request
15
+ # if we are doing to many requests at DGS the account will be
16
+ # temporarily blocked (for about 1 day)
12
17
  attr_reader :username
13
-
18
+
14
19
  def initialize(username=nil,password=nil)
15
20
  @username = username
16
21
  @password = password
17
22
  if @username == nil or @password == nil
18
- @username = ENV['DGS_USERNAME']
19
- @password = ENV['DGS_PASSWORD']
20
- if @username == nil or @password == nil
21
- raise "username and/or password not set"
22
- end
23
+ @username = ENV['DGS_USERNAME']
24
+ @password = ENV['DGS_PASSWORD']
25
+ if @username == nil or @password == nil
26
+ raise(RuntimeError, "username and/or password not set")
27
+ end
23
28
  end
29
+ @userinfo = Hash.new
24
30
  end
25
31
 
32
+ # Array of waiting games
26
33
  def waiting_games
34
+ save_wait
27
35
  games = []
28
36
  @home = DGS_STATUS_PAGE
29
37
  agent = WWW::Mechanize.new
@@ -46,7 +54,7 @@ class Dgs
46
54
  game_id = $1.to_i
47
55
  # ??? games << {:game => game_id, :user => userid}
48
56
  # games << $1.to_i
49
- games << game_id
57
+ games << game_id
50
58
  end
51
59
  if line =~ /uid=([0-9]+)"/ and game_id > 0
52
60
  user_id = $1.to_i
@@ -56,10 +64,13 @@ class Dgs
56
64
  games.uniq
57
65
  end
58
66
 
59
- # http://www.dragongoserver.net/show_games.php?uid=10737
67
+ # Array of your running games
68
+ # http://www.dragongoserver.net/show_games.php?uid=10737
60
69
  def running_games
70
+ save_wait
61
71
  games = []
62
- @home = 'http://www.dragongoserver.net/show_games.php?uid=10737' #TODO:
72
+ #@home = 'http://www.dragongoserver.net/show_games.php?uid=10737' #TODO:
73
+ @home = DGS_STATUS_PAGE
63
74
  agent = WWW::Mechanize.new
64
75
  agent.user_agent_alias = USER_AGENT_ALIAS
65
76
 
@@ -82,7 +93,9 @@ class Dgs
82
93
  games.uniq
83
94
  end
84
95
 
96
+ # your rank as a GoRank object
85
97
  def get_rank
98
+ save_wait
86
99
  @home = DGS_STATUS_PAGE
87
100
  agent = WWW::Mechanize.new
88
101
  agent.user_agent_alias = USER_AGENT_ALIAS
@@ -102,7 +115,9 @@ class Dgs
102
115
  myRank
103
116
  end
104
117
 
118
+ # your id at DGS
105
119
  def userid
120
+ save_wait
106
121
  @home = DGS_STATUS_PAGE
107
122
  agent = WWW::Mechanize.new
108
123
  agent.user_agent_alias = USER_AGENT_ALIAS
@@ -120,7 +135,6 @@ class Dgs
120
135
  #p page.links
121
136
  page.links.each { |link|
122
137
  if link.href =~ /ratinggraph/
123
- p link
124
138
  a = show_regexp(link.href, /^ratinggraph.php\?uid=(\d+)$/)
125
139
  @userid = a[0].to_i
126
140
  break
@@ -129,7 +143,141 @@ class Dgs
129
143
  @userid
130
144
  end
131
145
 
132
- private
146
+ # informations about a user at DGS
147
+ # returns a hash with attributes
148
+ def userinfo(user_id = nil)
149
+ save_wait
150
+ ## http://www.dragongoserver.net/userinfo.php?uid=10737
151
+ agent = WWW::Mechanize.new
152
+ agent.user_agent_alias = USER_AGENT_ALIAS
153
+ user_id = 10737 unless user_id
154
+ page = agent.get("http://www.dragongoserver.net/userinfo.php?uid=#{user_id}")
155
+ if page.body.include?(LOGGED_IN)
156
+ page = login(agent)
157
+ page = agent.get("http://www.dragongoserver.net/userinfo.php?uid=#{user_id}")
158
+ end
159
+ if page.body.include?("Sorry, I couldn't find this user.")
160
+ raise 'no user with this id'
161
+ end
162
+ @userinfo[:city] = nil
163
+ @userinfo[:country] = nil
164
+
165
+ result = Hash.new
166
+ page.body.each {|line|
167
+ #<td class="Rubric">Name</td><td>Thomas Preymesser</td>
168
+ if line =~ /td class="Rubric"/
169
+ #p line
170
+ a = show_regexp(line,
171
+ /td class="Rubric">(.*)<\/td><td>(.*)<\/td>/)
172
+ # /td class="Rubric">(.+)<\/td><td>.+<\/td>"/)
173
+ #p a
174
+ if a[0]=="Name"
175
+ result[:name] = a[1]
176
+ elsif a[0]=="Userid"
177
+ result[:userid] = a[1]
178
+ elsif a[0]=="Country"
179
+ b = show_regexp(a[1], /alt="(.*)" /)
180
+ result[:country] = b[0]
181
+ elsif a[0]=="City"
182
+ result[:city] = a[1]
183
+ elsif a[0]=="Rating"
184
+ #
185
+
186
+ b = show_regexp(a[1], /(\d+)&nbsp;(kyu|dan)/)
187
+ num = b[0]
188
+ what = b[1].to_sym
189
+ myRank = GoRank.new num, what
190
+ result[:rating] = myRank
191
+ #
192
+ #result[:rating] = a[1]
193
+ elsif a[0]=="Last access"
194
+ result[:lastaccess] = DateTime.parse(a[1].gsub(/&nbsp;/,' '))
195
+ elsif a[0]=="Last move"
196
+ begin
197
+ result[:lastmove] = DateTime.parse(a[1].gsub(/&nbsp;/,' '))
198
+ rescue
199
+ puts "invalid " + a[1].to_s
200
+ end
201
+ end
202
+ end
203
+ }
204
+ # @userinfo[:name]='Hugo Boss'
205
+ return result
206
+ end
207
+
208
+ #http://www.dragongoserver.net/game.php?gid=395863
209
+
210
+ def gameinfo(game_id)
211
+
212
+ demo='
213
+ <table class=GameInfos>
214
+ <tr id="blackInfo">
215
+ <td class=Color><img class=InTextStone src="17/b.gif" alt="Black"></td>
216
+ <td class=Name><A href="userinfo.php?uid=41360" class=User>Lukas Zach (lukaszach)</A></td>
217
+ <td class=Ratings><span class=StartRating><a class=Rating href="ratinggraph.php?uid=41360">30&nbsp;kyu&nbsp;(+11%)</a></span><span class=Separator>-</span><span class=EndRating><a class=Rating href="ratinggraph.php?uid=41360">30&nbsp;kyu&nbsp;(0%)</a></span></td>
218
+
219
+ <td class=Prisoners>Prisoners: 18</td>
220
+ </tr>
221
+ <tr id="blackTime">
222
+ <td colspan="4">
223
+ Time remaining: 6&nbsp;days&nbsp;and&nbsp;1&nbsp;hour</td>
224
+ </tr>
225
+ <tr id="whiteInfo">
226
+ <td class=Color><img class=InTextStone src="17/w.gif" alt="White"></td>
227
+ <td class=Name><A href="userinfo.php?uid=10737" class=User>Thomas Preymesser (thopre)</A></td>
228
+ <td class=Ratings><span class=StartRating><a class=Rating href="ratinggraph.php?uid=10737">30&nbsp;kyu&nbsp;(0%)</a></span><span class=Separator>-</span><span class=EndRating><a class=Rating href="ratinggraph.php?uid=10737">29&nbsp;kyu&nbsp;(-11%)</a></span></td>
229
+
230
+ <td class=Prisoners>Prisoners: 2</td>
231
+ </tr>
232
+ <tr id="whiteTime">
233
+ <td colspan="4">
234
+ Time remaining: 9&nbsp;days&nbsp;and&nbsp;6&nbsp;hours</td>
235
+ </tr>
236
+ <tr id="gameRules">
237
+ <td colspan="4">Rules: Komi: 6.5,&nbsp;&nbsp;&nbsp;Handicap: 0,&nbsp;&nbsp;&nbsp;Rated game: Yes</td>
238
+
239
+ </tr>
240
+ <tr id="gameTime">
241
+ <td colspan="4">Time limit: Japanese byoyomi: 15&nbsp;days + 1&nbsp;day per move and 3 extra periods</td>
242
+ </tr>
243
+ </table>
244
+ '
245
+ save_wait
246
+ agent = WWW::Mechanize.new
247
+ agent.user_agent_alias = USER_AGENT_ALIAS
248
+ p = "http://www.dragongoserver.net/game.php?gid=#{game_id}"
249
+ page = agent.get(p)
250
+ if page.body.include?(LOGGED_IN)
251
+ page = login(agent)
252
+ page = agent.get(p)
253
+ end
254
+ #TODO:
255
+ if page.body.include?("Sorry, I can't find that game")
256
+ raise 'no game with this id'
257
+ end
258
+ result = Hash.new
259
+ result[:white] = {}
260
+ result[:black] = {}
261
+
262
+ doc = page
263
+ #elements = doc.search("//table[@class='GameInfos']").search('tr[@id='BlackInfo')
264
+ elements = doc.search("//table[@class='GameInfos']")
265
+ blackinfo = (elements/"tr[@id='blackInfo']")
266
+ #pp blackinfo
267
+ whiteinfo = (elements/"tr[@id='whiteInfo']")
268
+ whiteinfo_name = (whiteinfo/"td[@class='Name']/a").inner_html
269
+ blackinfo_name = (blackinfo/"td[@class='Name']/a").inner_html
270
+ #pp whiteinfo
271
+ #pp whiteinfo_name
272
+ #pp blackinfo_name
273
+ ##p whiteinfo_name.inner_html
274
+ result[:black][:name] = blackinfo_name
275
+ result[:white][:name] = whiteinfo_name
276
+ # p result
277
+ result
278
+ end
279
+
280
+ private
133
281
 
134
282
  def show_regexp(a, re)
135
283
  if a =~ re
@@ -149,5 +297,8 @@ private
149
297
  return page
150
298
  end
151
299
 
152
-
153
- end
300
+ def save_wait
301
+ sleep(SAVE_WAIT)
302
+ end
303
+
304
+ end
@@ -1,8 +1,8 @@
1
1
  module Dragongoserver #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 0
5
- TINY = 4
4
+ MINOR = 1
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
File without changes
File without changes
File without changes
data/setup.rb CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,10 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'rubygems'
3
+ require 'gorank'
4
+
5
+ def after(d)
6
+ yield if DateTime.now > d
7
+ end
2
8
 
3
9
  class TestDragongoserver < Test::Unit::TestCase
4
10
 
@@ -9,7 +15,7 @@ class TestDragongoserver < Test::Unit::TestCase
9
15
  dgs_username = ENV['DGS_USERNAME']
10
16
  dgs_password = ENV['DGS_PASSWORD']
11
17
  @dgs = Dgs.new(dgs_username, dgs_password)
12
- @thomas_rank = GoRank.new(26, :kyu)
18
+ @thomas_rank = GoRank.new(29, :kyu)
13
19
  end
14
20
 
15
21
  def test_username
@@ -26,10 +32,12 @@ class TestDragongoserver < Test::Unit::TestCase
26
32
  end
27
33
 
28
34
  def test_waiting_games
29
- zlist = @dgs.waiting_games
30
- assert zlist.kind_of?(Array)
31
- # assert_equal [1,2,3], zlist
32
- assert zlist == [] or games_in_300_000(zlist)
35
+ after Date.new(2008,5,25) do
36
+ zlist = @dgs.waiting_games
37
+ assert zlist.kind_of?(Array)
38
+ # assert_equal [1,2,3], zlist
39
+ assert zlist == [] or games_in_300_000(zlist)
40
+ end
33
41
  end
34
42
 
35
43
  def games_in_300_000(a)
@@ -66,8 +74,10 @@ class TestDragongoserver < Test::Unit::TestCase
66
74
 
67
75
  # test waiting moves for me
68
76
  def test_bin_dgs_waiting
69
- assert_equal "lalala", `#{BIN_PREFIX}dgs -w`
70
- assert_equal "lalala", `#{BIN_PREFIX}dgs -waiting`
77
+ after Date.new(2008,5,25) do
78
+ assert_equal "lalala", `#{BIN_PREFIX}dgs -w`
79
+ assert_equal "lalala", `#{BIN_PREFIX}dgs -waiting`
80
+ end
71
81
  end
72
82
 
73
83
  def test_dgs_userid
@@ -76,7 +86,9 @@ class TestDragongoserver < Test::Unit::TestCase
76
86
 
77
87
  # test my running games
78
88
  def test_bin_dgs_running
79
- expected = "you have a total of 29 running games
89
+ after Date.new(2008,4,27) do
90
+ expected = "you have a total of 29 running games
91
+ end
80
92
  366511
81
93
  372651
82
94
  366534
@@ -89,13 +101,101 @@ class TestDragongoserver < Test::Unit::TestCase
89
101
  369303
90
102
  366535"
91
103
 
92
- assert_equal expected, `#{BIN_PREFIX}dgs -r`
93
- assert_equal expected, `#{BIN_PREFIX}dgs -running`
104
+ assert_equal expected, `#{BIN_PREFIX}dgs -r`
105
+ assert_equal expected, `#{BIN_PREFIX}dgs -running`
106
+ end
94
107
  end
95
108
 
96
109
  def test_bin_dgs_add_game
97
- assert_equal "Games was added to the waitingroom", `#{BIN_PREFIX}dgs --add-game`
110
+ after Date.new(2008,5,1) do
111
+ assert_equal "Games was added to the waitingroom", `#{BIN_PREFIX}dgs --add-game`
112
+ end
113
+ end
114
+
115
+ def test_bin_dgs_userinfo
116
+ after Date.new(2008,5,26) do
117
+ expected = "Userinfo"
118
+ assert_equal expected, `#{BIN_PREFIX}dgs --userinfo thopre`
119
+ end
120
+ end
121
+
122
+ def test_bin_dgs_minwait
123
+ after Date.new(2008,4,28) do
124
+ assert_equal expected, `#{BIN_PREFIX}dgs --min-wait 5`
125
+ end
126
+ end
127
+
128
+ def test_userinfo_name
129
+ assert @dgs.userinfo != nil, "userinfo not set"
130
+ assert_equal 'Thomas Preymesser', @dgs.userinfo[:name]
131
+ end
132
+
133
+ def test_userinfo_userid
134
+ assert @dgs.userinfo != nil, "userinfo not set"
135
+ assert_equal 'thopre', @dgs.userinfo[:userid]
136
+ end
98
137
 
138
+ def test_userinfo_city
139
+ assert @dgs.userinfo != nil, "userinfo not set"
140
+ assert_equal 'Berlin', @dgs.userinfo[:city]
99
141
  end
100
142
 
143
+ def test_userinfo_country
144
+ assert @dgs.userinfo != nil, "userinfo not set"
145
+ assert_equal 'Germany', @dgs.userinfo[:country]
146
+ end
147
+
148
+ def test_userinfo_name_with_id
149
+ assert_kind_of Dgs, @dgs
150
+ assert @dgs.userinfo(52) != nil, "userinfo not set"
151
+ assert_equal 'Tomas Boman', @dgs.userinfo(52)[:name]
152
+ end
153
+
154
+ def test_userinfo_1_10
155
+ after Date.new(2008,5,5) do
156
+ assert @dgs.userinfo(1) != nil, "userinfo not set"
157
+ assert_equal 'Guest', @dgs.userinfo(1)[:name]
158
+
159
+ after Date.new(2008,6,1) do
160
+ assert @dgs.userinfo(2) != nil, "userinfo not set"
161
+ assert_equal 'Erik O', @dgs.userinfo(2)[:name]
162
+
163
+ assert @dgs.userinfo(3) != nil, "userinfo not set"
164
+ assert_equal 'No name', @dgs.userinfo(3)[:name]
165
+
166
+ assert @dgs.userinfo(4) != nil, "userinfo not set"
167
+ assert_equal 'Alexandre Girardot', @dgs.userinfo(4)[:name]
168
+
169
+ assert @dgs.userinfo(5) != nil, "userinfo not set"
170
+ assert_equal 'Ma8e', @dgs.userinfo(5)[:name]
171
+
172
+ assert @dgs.userinfo(6) != nil, "userinfo not set"
173
+ assert_equal 'Roses', @dgs.userinfo(6)[:name]
174
+ end
175
+ end
176
+ end
177
+
178
+ def test_last_access_last_move
179
+ # dieser User war ewig nicht mehr eingeloggt
180
+ # falls er es doch wieder tut, dann schlaegt dieser Test feht
181
+ assert @dgs.userinfo(8000) != nil
182
+ # assert_equal '32005-05-07 19:23', @dgs.userinfo(8000)[:lastaccess]
183
+ # assert_equal '32005-05-07 16:30', @dgs.userinfo(8000)[:lastmove]
184
+ assert_kind_of DateTime, @dgs.userinfo(8000)[:lastmove]
185
+ assert_kind_of DateTime, @dgs.userinfo(8000)[:lastaccess]
186
+ # "2008-01-02T15:13:00+00:00"
187
+ assert_equal '2005-05-07T19:23:00+00:00', @dgs.userinfo(8000)[:lastaccess].to_s
188
+ assert_equal '2005-05-07T16:30:00+00:00', @dgs.userinfo(8000)[:lastmove].to_s
189
+ end
190
+
191
+ def test_gameinfo_page
192
+ #http://www.dragongoserver.net/game.php?gid=395863
193
+ assert_equal @dgs.gameinfo(395863) != nil
194
+ end
195
+
196
+ def test_gameinfo_page
197
+ #http://www.dragongoserver.net/game.php?gid=395863
198
+ assert_equal "Lukas Zach (lukaszach)", @dgs.gameinfo(395863)[:black][:name]
199
+ assert_equal "Thomas Preymesser (thopre)", @dgs.gameinfo(395863)[:white][:name]
200
+ end
101
201
  end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dragongoserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Preymesser
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-01-05 00:00:00 +01:00
12
+ date: 2008-04-27 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,6 +30,24 @@ dependencies:
30
30
  - !ruby/object:Gem::Version
31
31
  version: 0.0.1
32
32
  version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: choice
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.2
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: hpricot
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0.6"
50
+ version:
33
51
  description: Dragongoserver functions
34
52
  email: thopre@gmail.com
35
53
  executables:
@@ -50,6 +68,7 @@ files:
50
68
  - bin/dgs
51
69
  - config/hoe.rb
52
70
  - config/requirements.rb
71
+ - examples/example1.rb
53
72
  - lib/dragongoserver.rb
54
73
  - lib/dragongoserver/dragongoserver.rb
55
74
  - lib/dragongoserver/version.rb
@@ -85,10 +104,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
104
  requirements: []
86
105
 
87
106
  rubyforge_project: dragongoserver
88
- rubygems_version: 1.0.1
107
+ rubygems_version: 1.1.1
89
108
  signing_key:
90
109
  specification_version: 2
91
110
  summary: Dragongoserver functions
92
111
  test_files:
93
- - test/test_helper.rb
94
112
  - test/test_dragongoserver.rb
113
+ - test/test_helper.rb