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

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