Module: Clientura::Client::InstanceMethods
- Defined in:
- lib/clientura/client.rb
Instance Attribute Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#config ⇒ Object
110 111 112 |
# File 'lib/clientura/client.rb', line 110 def config @config ||= {} end |
Class Method Details
.included(klass) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/clientura/client.rb', line 92 def self.included(klass) klass.class_eval do define_method :registered_endpoints do klass.registered_endpoints end define_method :registered_pipes do klass.registered_pipes end define_method :registered_middleware do klass.registered_middleware end end end |
Instance Method Details
#call_endpoint(name_, args) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/clientura/client.rb', line 118 def call_endpoint(name_, args) endpoint = registered_endpoints.fetch name_ middlewares = endpoint.middleware.map do |name:, config:| { callable: registered_middleware.fetch(name), config: config } end request = middlewares .reduce Request.new do |request_, callable:, config:| middleware = MiddlewareFunctionContext.new(request: request_, client: self, args: args, callable: callable, config: config) middleware.call end request = request.update(:method) { endpoint.verb } request = request.update(:path) { endpoint.path.call(args) } response = request.call endpoints = endpoint.pipes.map do |name:, config:| -> (res) { registered_pipes.fetch(name).call(res, *config) } end endpoints.reduce response do |response_, pipe| pipe.call response_ end end |
#save_config(args) ⇒ Object
114 115 116 |
# File 'lib/clientura/client.rb', line 114 def save_config(args) self.config = config.merge args end |