class PactBroker::Client::Hal::Entity
Public Class Methods
new(href, data, http_client, response = nil)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 22 def initialize(href, data, http_client, response = nil) @href = href @data = data @links = (@data || {}).fetch("_links", {}) @client = http_client @response = response end
Public Instance Methods
_link(key, fallback_key = nil)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 70 def _link(key, fallback_key = nil) if @links[key] Link.new(@links[key], @client) elsif fallback_key && @links[fallback_key] Link.new(@links[fallback_key], @client) else nil end end
_link!(key)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 93 def _link!(key) _link(key) or raise RelationNotFoundError.new(relation_not_found_error_message(key, @href)) end
_links(key)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 80 def _links(key) if @links[key] && @links[key].is_a?(Array) link_collection = @links[key].collect do | hash | Link.new(hash, @client) end Links.new(@href, key, link_collection) elsif @links[key].is_a?(Hash) Links.new(@href, key, [Link.new(@links[key], @client)]) else nil end end
_links!(key)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 97 def _links!(key) _links(key) or raise RelationNotFoundError.new(relation_not_found_error_message(key, @href)) end
assert_success!(_ignored = nil)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 157 def assert_success!(_ignored = nil) self end
can?(key)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 62 def can?(key) @links.key? key.to_s end
does_not_exist?()
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 131 def does_not_exist? false end
embedded_entities(key = nil) { |data| ... }
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 116 def embedded_entities(key = nil) embedded_ents = if key @data["_embedded"][key] else yield @data["_embedded"] end embedded_ents.collect do | embedded_ent | Entity.new(self_href(embedded_ent), embedded_ent, @client, response) end end
embedded_entities!(key)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 108 def embedded_entities!(key) embedded_ents = (@data["_embedded"] && @data["_embedded"][key]) raise EmbeddedEntityNotFoundError.new("Could not find embedded entity with key '#{key}' in resource at #{@href}") unless embedded_ents embedded_ents.collect do | embedded_ent | Entity.new(self_href(embedded_ent), embedded_ent, @client, response) end end
embedded_entity() { |data| ... }
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 101 def embedded_entity embedded_ent = yield @data["_embedded"] if embedded_ent Entity.new(self_href(embedded_ent), embedded_ent, @client, response) end end
fetch(key, fallback_key = nil)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 139 def fetch(key, fallback_key = nil) @links[key] || (fallback_key && @links[fallback_key]) end
follow(key, http_method, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 66 def follow(key, http_method, *args) Link.new(@links[key].merge(method: http_method), @client).run(*args) end
get(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 30 def get(key, *args) _link(key).get(*args) end
get!(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 34 def get!(key, *args) get(key, *args).assert_success! end
method_missing(method_name, *args, &block)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 143 def method_missing(method_name, *args, &block) if @data.respond_to?(:key?) && @data.key?(method_name.to_s) @data[method_name.to_s] elsif @links.respond_to?(:key?) && @links.key?(method_name) Link.new(@links[method_name], @client).run(*args) else nil end end
patch(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 54 def patch(key, *args) _link(key).patch(*args) end
patch!(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 58 def patch!(key, *args) patch(key, *args).assert_success! end
post(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 38 def post(key, *args) _link(key).post(*args) end
post!(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 42 def post!(key, *args) post(key, *args).assert_success! end
put(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 46 def put(key, *args) _link(key).put(*args) end
put!(key, *args)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 50 def put!(key, *args) put(key, *args).assert_success! end
relation_not_found_error_message(key, href)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 165 def relation_not_found_error_message(key, href) "Could not find relation '#{key}' in resource at #{href}. The most likely reason for this is that you are on an old version of the Pact Broker and you need to upgrade, or you are using PactFlow and you don't have the permissions required for this action." end
respond_to_missing?(method_name, include_private = false)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 153 def respond_to_missing?(method_name, include_private = false) @data.key?(method_name) || @links.key?(method_name) end
response()
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 135 def response @response end
self_href(entity_hash)
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 161 def self_href(entity_hash) entity_hash["_links"] && entity_hash["_links"]["self"] && entity_hash["_links"]["self"]["href"] end
success?()
click to toggle source
# File lib/pact_broker/client/hal/entity.rb, line 127 def success? true end