module BPS::Publisher
Public Class Methods
register(*schemes, &resolver)
click to toggle source
# File lib/bps.rb, line 11 def self.register(*schemes, &resolver) @registry ||= {} schemes.each do |scheme| @registry[scheme] = resolver end end
resolve(url)
click to toggle source
# 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