Class: WireBridge::Middleware

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

Overview

Rack middleware — registers capabilities on first request.

use WireBridge::Middleware, service_name: “my-api”, base_url: “localhost:9292” do |b|

b.capability(name: "health check", handler: "/health", output: { status: WireBridge.string })

end

Instance Method Summary collapse

Constructor Details

#initialize(app, **opts) {|@bridge| ... } ⇒ Middleware

Returns a new instance of Middleware.

Yields:

  • (@bridge)


266
267
268
269
270
271
272
# File 'lib/wirebridge.rb', line 266

def initialize(app, **opts, &block)
  @app = app
  @bridge = Client.new(**opts)
  yield @bridge if block_given?
  @registered = false
  @mutex = Mutex.new
end

Instance Method Details

#call(env) ⇒ Object



274
275
276
277
278
279
280
281
282
# File 'lib/wirebridge.rb', line 274

def call(env)
  @mutex.synchronize do
    unless @registered
      @bridge.register
      @registered = true
    end
  end
  @app.call(env)
end