minestat 3.0.4 → 3.0.5

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +3 -0
  3. data/lib/minestat.rb +16 -18
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b38d0dd34f12f5f015fc90bb3c07f0cb11ccc975e915f33c8cf3834d0299c989
4
- data.tar.gz: 457f958e402011590eb518e25cab6c7c5464ede26d08dad2bc18c953e1ea94a3
3
+ metadata.gz: 91e281cebc7b0ed35188df906f0a93ffb216952b9f524f2aeb2a435120978273
4
+ data.tar.gz: 226896ef611cc2cc1d9bbc5122dddbf9a8a40b5089d5a956fd52af5bf13837a6
5
5
  SHA512:
6
- metadata.gz: 6964cc3a53ca8b1365f824f5f53336da7554fd646ed8de50c76a83a1e5784261c9969c2bea9c8ac1699b9b82c2a73edef8e6766c1e3012b50591afa82596651a
7
- data.tar.gz: 9204a211820b5a95da29e5ce64330153831a19976d45b43ff6eb8414c052aa80c0db646d9c37d2e92ac49d8b79b67af4ef57be2965431930856e24c26b081b3a
6
+ metadata.gz: 9c61f0e76903e24e94c669bc6963212775de447b6c898b57898737ac486a0182bbf22d93447b72e399207bf167c746c5441e3091f5b24478f09e0a9600c9dee1
7
+ data.tar.gz: 5d34a0b1282e6097bebdd4099398a99eac414b9ad59ced7a538ec632da838ecae7386da71a2ea708b17e60a794e9c4c7294704b26187ed92010bff1472740336
data/ChangeLog.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 3.0.5 (March 30, 2024)
2
+ - Fixed nested JSON MotD issue
3
+
1
4
  ## 3.0.4 (March 25, 2024)
2
5
  - Fixed typo
3
6
 
data/lib/minestat.rb CHANGED
@@ -27,7 +27,7 @@ require 'timeout'
27
27
  # Provides a Ruby interface for polling the status of Minecraft servers
28
28
  class MineStat
29
29
  # MineStat version
30
- VERSION = "3.0.3"
30
+ VERSION = "3.0.5"
31
31
 
32
32
  # Number of values expected from server
33
33
  NUM_FIELDS = 6
@@ -253,21 +253,19 @@ class MineStat
253
253
  private :set_connection_status
254
254
 
255
255
  # Strips message of the day formatting characters
256
- def strip_motd()
257
- unless @motd['text'] == nil
258
- @motd = @motd['text']
259
- @stripped_motd = @motd
260
- else
261
- @stripped_motd = @motd
262
- end
263
- unless @motd['extra'] == nil
264
- json_data = @motd['extra']
265
- unless json_data.nil? || json_data.empty?
266
- json_data.each do |nested_hash|
267
- @stripped_motd += nested_hash['text']
256
+ def strip_motd(raw_motd)
257
+ @stripped_motd = raw_motd if raw_motd.is_a?(String)
258
+
259
+ if raw_motd.is_a?(Hash)
260
+ @stripped_motd = raw_motd['text'] unless raw_motd['text'].nil?
261
+
262
+ unless raw_motd['extra'].nil?
263
+ raw_motd['extra'].each do |nested_hash|
264
+ @stripped_motd += strip_motd(nested_hash)
268
265
  end
269
266
  end
270
267
  end
268
+
271
269
  @stripped_motd = @stripped_motd.force_encoding('UTF-8')
272
270
  @stripped_motd = @stripped_motd.gsub(/§./, "")
273
271
  end
@@ -360,7 +358,7 @@ class MineStat
360
358
  if server_info != nil && server_info.length >= NUM_FIELDS_BETA
361
359
  @version = ">=1.8b/1.3" # since server does not return version, set it
362
360
  @motd = server_info[0]
363
- strip_motd()
361
+ strip_motd(@motd)
364
362
  @current_players = server_info[1].to_i
365
363
  @max_players = server_info[2].to_i
366
364
  @online = true
@@ -373,7 +371,7 @@ class MineStat
373
371
  @version = "#{server_info[3]} #{server_info[7]} (#{server_info[0]})"
374
372
  @mode = server_info[8]
375
373
  @motd = server_info[1]
376
- strip_motd()
374
+ strip_motd(@motd)
377
375
  @current_players = server_info[4].to_i
378
376
  @max_players = server_info[5].to_i
379
377
  @online = true
@@ -386,7 +384,7 @@ class MineStat
386
384
  server_info = Hash[*server_info[0].split(delimiter).flatten(1)]
387
385
  @version = server_info["version"]
388
386
  @motd = server_info["hostname"]
389
- strip_motd()
387
+ strip_motd(@motd)
390
388
  @current_players = server_info["numplayers"].to_i
391
389
  @max_players = server_info["maxplayers"].to_i
392
390
  unless server_info["plugins"].nil? || server_info["plugins"].empty?
@@ -405,7 +403,7 @@ class MineStat
405
403
  @protocol = server_info[1].to_i # contains the protocol version (51 for 1.9 or 78 for 1.6.4 for example)
406
404
  @version = server_info[2]
407
405
  @motd = server_info[3]
408
- strip_motd()
406
+ strip_motd(@motd)
409
407
  @current_players = server_info[4].to_i
410
408
  @max_players = server_info[5].to_i
411
409
  @online = true
@@ -612,7 +610,7 @@ class MineStat
612
610
  @protocol = json_data['version']['protocol'].to_i
613
611
  @version = json_data['version']['name']
614
612
  @motd = json_data['description']
615
- strip_motd()
613
+ strip_motd(@motd)
616
614
  @current_players = json_data['players']['online'].to_i
617
615
  @max_players = json_data['players']['max'].to_i
618
616
  @favicon_b64 = json_data['favicon']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minestat
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.4
4
+ version: 3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lloyd Dilley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-24 00:00:00.000000000 Z
11
+ date: 2024-04-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: MineStat polls Minecraft server data such as version, motd, current players,
14
14
  and max players.