Class: BlockGiven::Connectors::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/block_given/connectors/base.rb

Overview

A connector is a JSON-RPC transport. Subclasses implement #request; the chain is passed so multi-network providers (Alchemy) can pick the endpoint.

Direct Known Subclasses

Http, Stub

Instance Method Summary collapse

Instance Method Details

#batch(calls, chain: nil) ⇒ Object

Naive batch: one request per call. Transports with real batching override it. Returns an array of results; failed calls are returned as RpcError instances.



15
16
17
18
19
20
21
# File 'lib/block_given/connectors/base.rb', line 15

def batch(calls, chain: nil)
  calls.map do |(method, params)|
    request(method, params || [], chain: chain)
  rescue RpcError => e
    e
  end
end

#nameObject



23
# File 'lib/block_given/connectors/base.rb', line 23

def name = self.class.name.split("::").last.downcase

#request(method, params = [], chain: nil) ⇒ Object

Returns the JSON-RPC result (raw JSON value). Raises BlockGiven::RpcError on error.

Returns:

  • the JSON-RPC result (raw JSON value). Raises BlockGiven::RpcError on error.

Raises:



9
10
11
# File 'lib/block_given/connectors/base.rb', line 9

def request(method, params = [], chain: nil)
  raise NotImplementedError, "#{self.class}#request"
end