Class: Async::Discord::Api::Gateway

Inherits:
Object
  • Object
show all
Defined in:
lib/async/discord/api.rb

Overview

Gateway produces Chain instances bound to a specific Discord Client. Each call to a method on the Gateway starts a new chain.

Instance Method Summary collapse

Constructor Details

#initialize(client, prefix: %w[api v10])) ⇒ Gateway

Returns a new instance of Gateway.



39
40
41
42
# File 'lib/async/discord/api.rb', line 39

def initialize(client, prefix: %w[api v10])
  @client = client
  @prefix = prefix
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, **kwargs, &block) ⇒ Object

Forward all unknown methods to a fresh chain, starting the path.



55
56
57
58
59
60
61
# File 'lib/async/discord/api.rb', line 55

def method_missing(name, *args, **kwargs, &block)
  if name.start_with?("to_")
    super
  else
    chain.__send__(name, *args, **kwargs, &block)
  end
end

Instance Method Details

#chainObject

Start a fresh chain. Every method call on the gateway creates a new chain so chains are never reused.



46
47
48
49
50
51
52
# File 'lib/async/discord/api.rb', line 46

def chain
  Async::Matrix::Api::Chain.new(
    client: @client,
    path_tree: Api.path_tree,
    prefix: @prefix
  )
end

#inspectObject



67
68
69
# File 'lib/async/discord/api.rb', line 67

def inspect
  "#<#{self.class} prefix=/#{@prefix.join("/")}>"
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/async/discord/api.rb', line 63

def respond_to_missing?(name, include_private = false)
  !name.start_with?("to_") || super
end