Class: QstatRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/qstat_request.rb

Constant Summary collapse

MSG_SNIPPET_DELIMITER =
' ยท '

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(endpoint) ⇒ QstatRequest

Returns a new instance of QstatRequest.



6
7
8
# File 'lib/qstat_request.rb', line 6

def initialize(endpoint)
  @endpoint = endpoint
end

Instance Attribute Details

#resultObject

Returns the value of attribute result.



4
5
6
# File 'lib/qstat_request.rb', line 4

def result
  @result
end

Instance Method Details

#has_players?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/qstat_request.rb', line 72

def has_players?
  numplayers && numplayers > 0
end

#is_empty?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/qstat_request.rb', line 64

def is_empty?
  !has_players? && !has_spectators?
end


60
61
62
# File 'lib/qstat_request.rb', line 60

def join_link
  "<qw://#{@endpoint}>"
end

#live_server?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/qstat_request.rb', line 76

def live_server?
  !game_map.nil?
end

#player_namesObject



68
69
70
# File 'lib/qstat_request.rb', line 68

def player_names
  players.map(&:name)
end

#server_summaryObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/qstat_request.rb', line 43

def server_summary
  info = [name, game_map]

  info += if !has_spectators?
            ["#{numplayers}/#{maxplayers}"]
          else
            [
              "#{numplayers}/#{maxplayers} players",
              "#{numspectators}/#{maxspectators} spectators"
            ]
          end

  info << join_link

  info.join(MSG_SNIPPET_DELIMITER)
end

#to_full_embedObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/qstat_request.rb', line 14

def to_full_embed
  Discordrb::Webhooks::Embed.new.tap do |embed|
    embed.add_field(
      name: name,
      value: join_link,
    )

    teams.each do |team|
      embed << team.to_embed_field
    end

    footer = [game_map, "#{numplayers}/#{maxplayers} players"]

    if has_spectators?
      footer << "#{numspectators}/#{maxspectators} spectators"
    end

    embed.footer = Discordrb::Webhooks::EmbedFooter.new(
      text: footer.join(MSG_SNIPPET_DELIMITER)
    )
  end
end

#to_messageObject



37
38
39
40
41
# File 'lib/qstat_request.rb', line 37

def to_message
  return server_summary if is_empty?

  [server_summary, player_table].join("\n")
end