Module: BPS::Publisher

Defined in:
lib/bps.rb,
lib/bps/publisher/in_mem.rb,
lib/bps/publisher/abstract.rb

Defined Under Namespace

Classes: Abstract, InMem

Class Method Summary collapse

Class Method Details

.register(*schemes, &resolver) ⇒ Object



11
12
13
14
15
16
# File 'lib/bps.rb', line 11

def self.register(*schemes, &resolver)
  @registry ||= {}
  schemes.each do |scheme|
    @registry[scheme] = resolver
  end
end

.resolve(url) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
26
27
28
# File 'lib/bps.rb', line 18

def self.resolve(url)
  url = url.is_a?(::URI) ? url.dup : URI.parse(url)
  rsl = @registry[url.scheme]
  raise ArgumentError, "Unable to resolve publisher #{url}, scheme #{url.scheme} is not registered" unless rsl

  opts = {}
  CGI.parse(url.query.to_s).each do |key, values|
    opts[key.to_sym] = values.first
  end
  rsl.call(url, **opts)
end