module Rsbe::Client
Constants
- VERSION
Public Class Methods
find(url)
click to toggle source
# File lib/rsbe/client.rb, line 18 def self.find(url) assert_same_origin(url) find_and_instantiate(url) end
Private Class Methods
assert_same_origin(url)
click to toggle source
# File lib/rsbe/client.rb, line 23 def self.assert_same_origin(url) conn = Rsbe::Client::Connection.new unless conn.same_origin?(url) raise Rsbe::Client::WrongOriginError.new("incorrect origin: #{url}") end end
find_and_instantiate(url)
click to toggle source
# File lib/rsbe/client.rb, line 31 def self.find_and_instantiate(url) retval = nil [ Rsbe::Client::Partner, Rsbe::Client::Provider, Rsbe::Client::Collection, Rsbe::Client::Se ].each do |klass| # UUID Regexp from http://stackoverflow.com/a/14166194 m = /#{klass.base_path}\/(?<uuid>[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12})\z/i.match(url) next if m.nil? retval = klass.find(m['uuid']) break end raise Rsbe::Client::UnrecognizedResourceError.new("no matching resource found for #{url}") if retval.nil? retval end