Class: Async::Matrix::Api::Gateway
- Inherits:
-
Object
- Object
- Async::Matrix::Api::Gateway
- Defined in:
- lib/async/matrix/api.rb
Overview
Gateway produces Chain instances bound to a specific Client. Each call to a method on the Gateway starts a new chain.
Instance Method Summary collapse
-
#chain ⇒ Object
Start a fresh chain.
-
#initialize(client, prefix: %w[_matrix client v3])) ⇒ Gateway
constructor
A new instance of Gateway.
- #inspect ⇒ Object
-
#method_missing(name, *args, **kwargs, &block) ⇒ Object
Forward all unknown methods to a fresh chain, starting the path.
- #respond_to_missing?(name, include_private = false) ⇒ Boolean
Constructor Details
#initialize(client, prefix: %w[_matrix client v3])) ⇒ Gateway
Returns a new instance of Gateway.
41 42 43 44 |
# File 'lib/async/matrix/api.rb', line 41 def initialize(client, prefix: %w[_matrix client v3]) @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.
53 54 55 56 57 58 59 |
# File 'lib/async/matrix/api.rb', line 53 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
#chain ⇒ Object
Start a fresh chain. Every method call on the gateway creates a new chain so chains are never reused.
48 49 50 |
# File 'lib/async/matrix/api.rb', line 48 def chain Chain.new(client: @client, path_tree: Api.path_tree, prefix: @prefix) end |
#inspect ⇒ Object
65 66 67 |
# File 'lib/async/matrix/api.rb', line 65 def inspect "#<#{self.class} prefix=/#{@prefix.join("/")}>" end |
#respond_to_missing?(name, include_private = false) ⇒ Boolean
61 62 63 |
# File 'lib/async/matrix/api.rb', line 61 def respond_to_missing?(name, include_private = false) !name.start_with?("to_") || super end |